File类
String fileName="test.jpg";
new File(path,fileName);//相对路径:相对于path的路径
new File(new File(path),fileName);//同样是相对于path的路径
IO流分类
1、流向 输入流与输出流
程序 与 文件|数组|网络连接|数据库2、数据
字节流 处理一切文件字符流 文本文件
3、功能分
节点流 包裹源头,唯一IO的第一线,所有的操作都必须通过他们。可以直接从数据源或者目的地读取数据比如InputStream处理流 增强功能,不直接链接数据源或者目的地,通过包装节点流提高程序对流的处理性能
4、字节流(byte)可以指定编码
输入流以程序为中心进来,InputStream
输出流
以程序为中心出去,OutputStream
5、字符流(char)无法指定编码
输入流以程序为中心进来,Reader
输出流
以程序为中心出去,Writer
在读写文件时,不会一下子读完或者写完,需要定义一个容量,每次读取或者写入固定容量的数据。循环读写直至完成。这个容量一般会用数组来做,字节流时byte数组,字符流用char数组。
6、处理流
处理流一定要在节点流之上,即要包裹节点流。后期应用一般加上方法字节缓冲流
BufferInputStream
BufferOutputStream
字符缓冲流
BufferReader 相对于处理流的字符流新增方法:readLine()读取一行
BufferWriter 相对于处理刘的字符流新增方法: newLine()一行的分隔符
7、流的转换
字节流转为字符流 用到InputStreamReader 或者是OutPutStreamWriter
有时候读取文件的时候可以采用字符流来读取,但是字符流无法指定编码,所以在读取的时候可能会出现乱码的问题。所以可以通过字节流指定编码然后字节流转换成字符流。BufferReader br = new BufferReader(new InputStreamReader(new FileInputStream(new File("dd"),"utf-8")));
FileUtils
//读
List<String> lines = FileUtils.readLines(new File("D:/exportData0628"), "UTF-8");
//写
FileUtils.writeLines(new File("D:/exportData0628"), lines);