FileWriter(字符流)
-
最简单的方式写入字符串
-
标准流程(写入->刷新->关闭)
@Test public void fileWriteTest1() throws IOException { FileWriter fileWriter = new FileWriter("E:/fileWriteTest.txt"); //向缓冲区写入数据(此时数据还没有写入硬盘) fileWriter.write("赵玉龙"); //刷新缓冲区(此时数据才会被写入硬盘,之后可继续写入数据) fileWriter.flush(); //释放资源(不可再向文件写入数据) fileWriter.close(); }
-
写完直接关闭(写入->刷新->关闭)
@Test public void fileWriteTest2() throws IOException { FileWriter fileWriter = new FileWriter("E:/fileWriteTest.txt"); //向缓冲区写入数据(此时数据还没有写入硬盘) fileWriter.write("赵玉龙"); //释放资源(会自动刷新缓冲区将数据写入硬盘,但不可再写入) fileWriter.close(); }
-
-
以追加的方式写
@Test public void fileWriteAppendTest() throws IOException { /* * 第二个参数表示是否允许追加数据 * true:允许追加数据 * false:不允许追加数据(默认值) * */ FileWriter fileWriter = new FileWriter("E:/fileWriteAppendTest.txt", true); //第一次写入 fileWriter.write("赵玉龙\n"); //第二次写入(因为允许追加,所以此时写入的数据不会覆盖第一次写入的数据) fileWriter.write("hello,world!\n"); //刷新缓冲区 fileWriter.flush(); //释放资源 fileWriter.close(); }
FileReader(字符流)
-
一个字符一个字符读
@Test public void fileReaderOneByOneTest() throws IOException{ FileReader fileReader = new FileReader("E:/test.txt"); int len; //单个字符读取(注:返回值为当前读取到的字符的ASCII码) while ((len = fileReader.read()) != -1){ System.out.print((char) len); } fileReader.close(); }
-
向缓冲区多次读取多个字符
@Test public void fileReaderByArrayTest() throws IOException{ FileReader fileReader = new FileReader("E:/test.txt"); int len; //多个字符读取(注:返回值的为当前读取到字符的个数) char[] c = new char[1024]; while ((len = fileReader.read(c)) != -1){ System.out.println(new String(c,0,len)); } fileReader.close(); }