文本文件都是字符数据,因此使用字符流进行操作。
可以通过缓冲区来提高对文件的读写效率。
读写文本文件
package com.gc.stream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Demo { public static void main(String[] args) { testFileWriter(); testFileReader(); testFileReaderWithBuffer(); } //手动设置缓冲区来提高效率 private static void testFileReaderWithBuffer() { FileReader fr = null; try { fr = new FileReader("temp\\text.txt"); //字符缓冲区 char[] cbuf = new char[1024]; //记录每次读取到cbuf缓冲区中的字符个数 int len = 0; //read(cbuf),一次读取cbuf.length个字符,如果数组满,则阻塞 //阻塞后,取出数组中的字符 //再次读取,重新存入数组,从0角标开始覆盖之前的数据 //最后读取到文件末尾,返回-1,循环结束 while((len=fr.read(cbuf))!=-1) { //从缓冲区中取出本次所读取的字符 System.out.print(new String(cbuf, 0, len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(fr!=null) try { fr.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } /** * 使用FileReader读取文件中的文本数据,没有使用缓冲区,一次读1个字符就阻塞,效率低! */ private static void testFileReader() { FileReader fr = null; try { fr = new FileReader("temp\\text.txt"); int ch = 0; //read()方法1次读1个字符,即2个字节。[1个中文字符占2个字节] //文件内容的结尾处用-1表示 while((ch=fr.read())!=-1) { System.out.print((char)ch); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if(fr!=null) try { fr.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } /** * 使用FileWriter将字符数据写入到文件 */ private static void testFileWriter() { //字符流写文件 FileWriter fw = null; try { //如果是相对路径,则自动相对于该项目的根目录 File parent = new File("temp"); if(!parent.exists()) parent.mkdir(); File f = new File(parent,"text.txt"); if(!f.exists()) f.createNewFile(); //是否追加写入 boolean append = false; fw = new FileWriter(f,append); fw.write("你好hello stream!"); //换行 fw.write(System.lineSeparator()); fw.write("new Line"); //刷新缓冲区 fw.flush(); } catch (IOException e) { e.printStackTrace(); } finally { if(fw!=null) try { //关闭流(关闭动作会自动刷新缓冲区) fw.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } }
复制文本文件
package com.gc.file; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; //手动设置缓冲区,提高读写效率 public class CopyFile { private static final int BUFFER_SIZE = 1024;//缓冲区大小 public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try { fr = new FileReader("temp\\text.txt"); fw = new FileWriter("temp\\copy_text.txt"); //建立一个临时容器,用来缓存每次读取到的字符 char[] buf = new char[BUFFER_SIZE]; //记录每次读取到字符缓冲区的字符个数 int len = 0; while((len=fr.read(buf))!=-1) { //将本次读取到的字符从缓冲区取出,并写入到文件 fw.write(buf, 0, len); } //fw.flush();//刷新与否都可以,因为close()会自动刷新缓冲区 } catch(IOException e) { throw new RuntimeException("文件读写发生错误"); } finally { //最后,关闭流 try { if(fr!=null) fr.close(); if(fw!=null) fw.close(); } catch (IOException e) { throw new RuntimeException("关闭流失败"); } } } }
相关推荐
java FileReader/FileWriter读写字母和数字没问题,但读写汉字乱码。记录下,后面找到解决方法再补上。 public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try { int a =...
FileReader和FileWriter进行复制。以及对每次读取的字符个数的理解
actividad-3-tdd-y-filereader报告越界
使用FileWriter写文件-注意事项;使用FileWriter写文件-注意事项;21;使用FileReader读文件-注意事项;使用FileReader读文件-注意事项;24;BufferedWriter和BufferedReader;import java.io.*; public class ...
文件字符流FileReader&FileWriter FileReader :通过字符的方式读取文件,仅适合字符文件 FileWriter :通过字节的方式写出或追加数据到文件中,仅适合字符文件 部分方法同文件字节流(read(),write()) 其他方法: ...
/** * 一、BufferedReader类 public class BufferedReader extends Reader * 从字符输入流中读取文本,缓冲... * 三、FileWriter(少量文字) 和 BufferedWriter(大量文字)实现简单文件写操作 * @author hulk */
2、常用21个IO流:FileWriter、FileReader、CharArrayReader、CharArrayWriter、CharSequence、OutputStreamWriter、FileOutputStream、InputStreamReader、PrintWriter、BufferedReader、InputStream、...
java中的IO操作总结(一) 所谓IO,也就是Input与Output的缩写...其对应子类FileWriter和FileReader可实现文件的读写操作 BufferedWriter和BufferedReader能够提供缓冲区功能,用以提高效率 解压密码 www.jiangyea.com
详细介绍了C#基本文件读写语法 在winform下进行文本文件txt的读写 界面清晰简单 适合入门读者
文章目录IO基础(字符流)一、字符流二、常用的字符流类的继承关系三、字符流 FileReader 和 FileWriter四、字符缓冲流 BufferedReader 和 BufferedWriter五、 字符字节转换流(InputStreamReader/...
使用文件阅读器 api 预览图像一个简单的演示,展示如何在上传前预览图像。
FileReader 文件操作输入字符流 Constructor 构造方法 FileReader(File file) 根据File类对象创建对应的FileReader字符流输入对象 FileReader(String pathName) 根据String类型文件路径创建对应的FileReader...
最近,不建议使用FileReader.readAsBinaryString(),因此我更新了Socket.io文件,以使用ArrayBuffer(对象直接从JavaScript处理二进制数据)而不是二进制字符串。 另外,较新的版本具有更多功能,例如服务器端...
本文给大家分享一段示例程序,通过示例代码可以看出FileReader是基于InputStreamReader实现的,FileWriter是基于OutputStreamWriter实现的,具体程序代码大家通过本文了解下吧
I/O流技术提供了丰富的功能和特性,使得开发者能够轻松地进行文件的读写、网络通信、处理数据等操作。另外,Java还提供了一些高级的流类,如缓冲流、对象流、数据流等,它们在底层字节流和字符流的基础上提供了更多...
jsp的FileWriter和FileReader示例,使用多个方法示例,对文件读写,可以解决中文乱码问题
FileReader("文件路径") FileWriter("文件路径") 逐个读取 存入字符read() 无缓冲的输入、输出流每一次读写都肯引发磁盘的读写操作,占用大量资源 缓冲流(装饰器模式) 缓冲流是一种装饰器类 可实现按规定字符数、...
了解java.io包 ...运用FileReader类和FileWriter类配合BufferedReader类和BufferedWriter类读/写字符文件 使用BufferedReader类从控制台接受输入 运用DataInputStream类和DataOutputStream类读写数据文件
文件字符输入流 FileReader package p1; import java.io.*; public class Chp11_2 { /* public void showUnicode(){ System.out.println("Unicode编码:"); int l = 0; for(int k = 0 ; k; k++){ System....
本文实例为大家分享了H5利用FileReader上传文件的具体代码,供大家参考,具体内容如下 1. Html部分 文件上传演练 <!-- 这里用来显示读取结果 --> <div id=inImgs></div> <div id=imgInfo></div> ...