File类
IO包
getAbsolutePath(); 查看绝对路径
getPath(); 查看相对路径
注意:如果获取文件时传入的路径就是绝对路径,那么getPath获取的也是绝对路径
二.字节流
1. 定义读的源头文件
InputStream is=new InputStream("文件路径");
2. 定义写的目标文件
OutputStream os=new OutputStream("文件路径");
3. 定义传输字节的管道
byte[] b=new byte[1024];
4. 循环读写
while(is.read(b)!=-1){
os.write(b,0,b.length)
}
5.关闭源头和目标流
中文编码 CBK(GB2312) UTF-8
CBK 一个中文占2个字节
UTF-8 一个中文占3个字节
注意:增加字节数组长度,可以提高读写文件的效率。但是,相应的也会增加系统负担,所以一般会折中选择 1024*8*10
三.字符流
1.创建读写文件对象
Reader fr=new FileReader("E://1.txt");
Writer fw=new FileWriter("E://2.txt");
2.创建读写缓冲区间
BufferedReader br=new BufferedReader(fr);
BufferedWriter bw=new BufferedWriter(fw);
3.逐行读取
StringBuffer sb=new StringBuffer();
String line="";
while((line=br.readLine())!=null){
sb.append(line);
}
4.写入文件
bw.wirte(sb.toString());
5.关闭
bw.flush();
bw.close();
注意: wirte方法并不会真正的写入(数据还在缓存中),必须调用flush方法,强制刷新缓存才会真正的写入,负责只会生成一个空的文件
也可以调用close方法关闭写的对象,因为调用close方法时,系统会强制调用一次flush方法
字符流和字节流
字符流的效率高于字节流
1.字符流有增益的缓冲区间
2.字符流只往文件中写了一次
3.字符流在处理字符串时更加灵活方便