文件、流总结
1、File类:File类位于java.io包中,我们可以通过File对象的方法创建,删除,修改和查找文件。
?????????????? ?例:创建文件:java.io.File file = new java.io.File(path);
????????????????????? 删除文件:file.delete();
1)文件系统规则:
?? 1、文件的名字包括文件的路径名和扩展名。?
???2、同一目录下不会存在同名的目录和文件
?? 3、相对路径是不以路径分隔符开头的文件路径,绝对路径是以根目录开头的路径。
?? 例:文件绝对路径:String path = "D:\\a\\b\\c\\d"; ???
???????? c文件相对d的路径:String path2 = "b\\c.txt";
???????? d文件相对c的路径:String path3 = "..\\d.txt";
?? 4、不同的系统中,分割符是不同的。在win系统中,目录分割符和路径分割符分别是""和";",而liunx系统中,目录? 分割符和路径分割符分别是"/"和":"。
2)File类的属性:public static Stirng pathSeparator:表示当前操作系统的路径分隔符。?
?????????????????????public static String separator:表示当前操作系统的名字分隔符
3)File类的构造器:File(File parent,String child):表示在一个父文件下创建一个child文件。
???????????????????????? File(String pathName):创建一个指向pathname的文件对象。
???????????????????????? File(String parent,String child):创建一个以parent字符串为父目录名的指向child的文件对象。?
?????????????????????????后两个构造器只是实例化了文件对象,但是并没有创建文件。
4)File类的方法: boolean exists():判断文件是否存在
?????????????????????? 例:if(temFile.exists())?
???????????????????? String getName():得到文件名字?
??????????????????????例:String Name = temFile.getName();?
?????????????????????boolean isDirectory():判断文件是否是目录
????????????????????? 例:if(temFile.isDirectory())
???????????????????? boolean isFile():判断文件是否是真实文件
????????????????????? 例:if(temFile.isFile())
??????????????????? long length():得到文件长度
????????????????????? 例:tem.length()?
????????????????????File[] listFiles():将文件下一级的目录和真实文件作为一个数组返回
???????????????????? 例:File[] subFile = dirFile.listFiles();?
???????????????????static File[] listRoots():将每个逻辑驱动器作为返回文件的一个元素
????????????????????? 例:File fe = File.listRoots();
?????????????????? boolean mkdir():根据文件名字创建一个目录?
???????????????????boolean mkdirs():若文件名字有多级目录,可一次创建
?????????????????? boolean delete():删除文件
?????????????????? boolean createNewFile():创建一个新文件
2、递归:指一种计算方法或方法调用的规则,简单地说就是自己调用自己,所用的方法是相同的。递归算法常用于处理一些无法穷举的计算,但这些计算要有一定的规律。
?? 递归的缺点:容易出现死循环,导致内容溢出。
?? 例: public static void main(String[] args) {
???????????String input=JOptionPane.showInputDialog("please input the number of the disks you want?me move.");
???????????int num=Integer.parseInt(input);
???????????move(num,from,mid,to);
??? }
?? private static void move(int num, String from2, String mid2, String to2) {
????????? if(num==1){
????????? System.out.println("move disk 1 from "+from2+" to "+to2);
????????? }else {
????????? move(num-1,from2,to2,mid2);
??????????System.out.println("move disk "+num+" from "+from2+" to "+to2);
????????? move(num-1,mid2,from2,to2);
???????? }
}
3、异常:java中的异常为java.lang包下的Exception类。
?? 关键字:1、try:catch关键字常用在try catch或在try catch finally中定义异常处理块,每个try块都必须有一个catch或finally语句
例:try{
?????????? 可能引发异常的块
??? }
??? catch{
????????? 处理异常的代码
??? }
??? finally{
?????????? 有无异常都处理的语句
??? }
?? 2、catch:catch关键字常用在try catch或在try catch finally中定义异常处理块。
?? 3、finally:用来定义在try catch finally中定义的块。
?? 4、throw: 用于引发异常。throw 语句将 java.lang.Throwable 作为参数,Throwable 在调用栈中向上传播,直到被适当的 catch 块捕获。
例:if (error){
????????? throw new IOException("error reading file");
????? }
?? 5、throws:应用于方法,以便指出方法引发了特定类型的异常。throws 关键字将逗号分隔的java.lang.Throwables 列表作为参数。如果要在 try-catch 块中包含带 throws 子句的方法的调 用,必须提供该方法的调用者。
例:public class MyClass{
?????????? public method readFile(String filename) throws IOException{
?????????? }
???? }
4、流:输入和输出的抽象。
?? 1)流的分类:按方向分为:输入流和输出流
????????????????? 按性质分为:字节流:按最小单位读取的流,直接连接到输入流的源。?
??????????????????????????????????? 缓冲流:包装基础流,提高缓冲功能。
??????????????????????????????????? 对象流:对象流的读取就是java对象序列化(只要是对象,就要进行序列化)。
??????????????????????????????????? 基与具体数据类型的流:从流中读取指定数据类型的数据。
??????????????????????????????????? 除字节流外,其它流均不可直接连接到输入流的源。
?? 2)InputStream定义的方法:int avialavle():可读取的有效字节长度。?
????????????????????????????????????????????例:byte[] array = new byte[ins.avialavle()];?
????????????????????????????????????????????void close():关闭流对象。
??????????????????????????????????????????? 例:ins.close();?
????????????????????????????????????????????int read():从流中读取数据,若流已到结尾,则返回-1。
??????????????????????????????????????????? 例:int read(byte[] b);
3)OutputStream定义的方法:void close():关闭流。
?????????????????????????????????????????? ?例:out.close();
????????????????????????????????????????? ?void flush():将有可能还保存在内存中的数据强制输出到目标中。?
????????????????????????????????????????????例:out.flush();?
?????????????????????????????????????????? void write(byte[] b):将数组中内容输出到流中
????????????????????????????????????????? ?例:out.write(i);
?????????????????????????????????????????? void write(byte[] b,int off,int len):将数组中一部分写入流中
????????????????????????????????????????? ?void write(int b):向流中写入一个字节
4)FileInputStream的构造器:FileInputStream(File file):通过文件对象做参数构造输入流对象
?????????????????????????????????????????? FileInputStream(String name):传入的字符串连接到指定文件的输入流?
???????????????????????????????????????????例:InputStream ins = new FileInputStream(fileName);
5)FileOutputStream的构造器:FileOutputStream(File file):构造输出到指定文件的输出流
???????????????????????????????????????????? ?FileOutputStream(File file,boolean append):append表示输出到文件的数据是否在已有数据后
???????????????????????????????????????????? ?FileOutputStream(String name) 例:OutputStream out = new FileOutputStream(txtName);?
??????????????????????????????????????????????FileOutputStream(String name,boolean append)
6)BufferedInputStream的构造器: BufferedInputStream(InputStream in):创建一个默认缓冲区大小的缓冲对象?
?????????????????????????????????????????????????????例:BufferedInputStream bis = new BufferedInputStream(ins);?
?????????????????????????????????????????????????????BufferedInputStream(InputStream in,int size):指定缓冲区大小,构造缓冲输入函数
7)BufferedOutputStream的构造器:BufferedOutputStream(OutputStream out):使用默认缓冲区构造缓冲输入流
????????????????????????????????????????????????????? 例:BufferedOutputStream bos = new BufferedOutputStream(out);
????????????????????????????????????????????????????? BufferedOutputStream(OutputStream out,int size):指定缓冲大小
?????
?