/**
* 测试文件字符流FileReader/FileWriter
*/
public class TestFileRW {
public static void main(String[] args) {
try (FileReader fr = new FileReader("iostream/testFile.txt");
FileWriter fw = new FileWriter("iostream/testFile2.txt")){
//字符流以字符为单位读写数据
for (int i = fr.read();i!=-1;i = fr.read()){
//.read()返回int在0-65535之间,对应unicode字符集,读完返回-1
fw.write(i);
//.write(int)一次写入16位/2byte二进制数
}
fw.flush();
}catch (Exception e ){
e.printStackTrace();
}
try(FileWriter fw = new FileWriter("iostream/testFile2.txt",true)){
//FileWriter在实例化时会对指定路径的文件进行覆盖,如果没有该文件会新建,如果有会覆盖成新的空文件,而第二个参数boolean append 为true时会在原文件的后面续写内容,不破坏原始内容,如果没有该文件也会新建
fw.write(".write()方法可以直接写入字符串\r ");
//字符串中换行使用\r 回车符+换行符完成
fw.flush();
}catch (Exception e ){
e.printStackTrace();
}
try(FileReader fr = new FileReader("iostream/testFile2.txt");
FileWriter fw = new FileWriter("iostream/testFile3.txt")){
char buffer[] = new char[1024];
//使用缓冲减少写入方法调用频率,字符流的缓冲的类型为char[]
//字符流中没有.available()方法估算长度
for (int len = fr.read(buffer);len!=-1;len = fr.read(buffer)){
//.read(char[])返回读取到的字符长度
fw.write(buffer,0,len);
//和字节输出流类似,传入数组、偏移量、长度
}
fw.flush();
}catch (Exception e){
e.printStackTrace();
}
try(FileWriter fw = new FileWriter("iostream/testFile3.txt");
BufferedWriter bw = new BufferedWriter(fw)){
//BufferedWriter字符缓冲流,处理流,对节点流进行包装,提供缓冲
bw.write("write方法没有变化");
bw.write("不使用换行时这句话和上一句在同一行");
bw.newLine();
bw.write("使用newLine方法实现换行");
bw.flush();
}catch (Exception e){
e.printStackTrace();
}
try(FileReader fr = new FileReader("iostream/testFile3.txt");
BufferedReader br = new BufferedReader(fr)){
System.out.println(br.readLine());
//.readLine()方法一次读取一行,一行读完结尾不包含\r
}catch (Exception e){
e.printStackTrace();
}
try(BufferedReader br = new BufferedReader(new FileReader("iostream/testFile3.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("iostream/testFile4.txt"))){
int num=1;
for (String line = br.readLine();line!=null;line = br.readLine()){
//当内容读完.readLine()返回空
bw.write(num+". "+line);
bw.newLine();
//.readLine()方法读取的字符串不包含\r ,在写入时需要加.newLine()方法换行
num++;
//行号
}
bw.flush();
}catch (Exception e){
e.printStackTrace();
}
}
}
| 留言与评论(共有 0 条评论) “” |