File/文件
java.io包中/非流,不创建通道
格式:
File file = new File("路径");
路径
-
绝对路径:
-
从盘符向下寻找;
-
从项目根目录开始寻找
-
-
相对路径:
-
从当前编辑文件路径相对于你要找的文件的路径
../ 上一级
-
试用的场合一般为寻找工程中文件
-
常用方法:
//返回父目录的抽象路径 .getparentFile(); //文件是否存在 .exists(); //创建一个空的文件.该方法会抛出异常 .createNewFile(); //删除 .delete(); //获得路径 .getAbsolutepath(); //获得文件名 .getName(); //得到文件的父级,返回String .getParent(); //判断是否是文件夹 .isDirectory(); //获得当前路径下的所有文件名 .list();
在实际生活中我们常常需要提取某个文件夹下的某种文件,如果是得到所有文件在判断,这样显得很麻烦,java为我们提供了这样的方法
.list(FilenmeFilter in);
这是一个list()方法的重载,传入的FilenmeFilter一个借口,我们可以通过匿名内部类的方式实现该接口,
.list(new FilenmeFilter(){ public boolean accept((File file),(String name)){ if(name.endWith(".clsaa")) return ture; return false; } });
流的分类
分类方式 | 类A | 类B |
---|---|---|
传输方向 | 输入流 | 输出流 |
传输数数据类型 | 字节流 | 字符流 |
操作方式 | 节点流 | 过滤流 |
其他:转换流
字节流-输入流
作用:读取文件。
类名:FileInputSteam
格式:
FileInputSteam fis = new FileInputSteam("文件路径"); //1.FileInputSteam("文件路径")会抛出异常 //2.如果文件是相对路径,在文件夹下则只需要写文件名,在SRC下则需要加上SRC的文件夹。 //java在编译时会为类名自动添加包名。
方法:
int n = fis.read(); //1.读取一个字节,以整数返回(对于汉字无法读取),存放在n中 //2.每使用一次,光标向后移动一位 //3.读取到末尾时返回-1
int n = fis.((byte[] bytes)); //1.读取byte长度的字节数,存储在bytes中 //2.返回的n为bytes数组中读取的有效数据长度 //3.读取到末尾时返回-1
字节流-输出流
FileOutputSteam fos = new FileOutputSteam("文件路径"); //1.FileOutputSteam("文件路径")会抛出异常 //2.如果文件是相对路径,在文件夹下则只需要写文件名,在SRC下则需要加上SRC的文件夹。 //java在编译时会为类名自动添加包名。 //3.如果路径中的最后文件不存在,会自动添加,(但是中间的路径必须存在,不然会报错)
方法:
fos.write(); //用法类比.read(),包括重载.write((byte[] bytes));
流的关闭
-
写在finally中
-
先判断是否为空
-
关闭函数.close();
-
关闭流时也会抛出异常,切记一个流的关闭,一个try/catch
-
因为try/catch语言的独立性,所以流的声明要在try/catch语句外
字符流
上层抽象
-
Reader/自符输入,常用实现类:FileReader
-
Writer/自符输出,常用实现类:FileWriter
特点:读取的的是一个字符-两个字节
用法类似字节流
过滤流
缓冲流
类名:
-
字节输入:BufferedInputStream
-
字节输出:BufferedOutputStream
-
字符输入:BufferedReader
-
字符输出:BufferedWriter
构造器:
BufferedInputStream(InputStream in); //缓冲流传入的是实现InputStream接口的子类 //在关闭流时,关闭它,其内部流也会关闭
特性:
-
读取数度快
-
不关闭缓冲流,会有一部分数据保留在“缓冲管中”,造成数据的缺失
关闭流时会执行.flush();(冲洗缓冲管方法)
-
在字符输入流中有一个特殊方法
.readLine(); //1.读取一行字符,不包括换行符( ) //2.读取完成返回null //3.对应的.write(.....+" "),需要添加" "
类名:PrintWriter
方法:
.println((String str));//打印并换行