浅谈我对IO流的了解 - 字符流
来源:互联网 发布:6080软件下载 编辑:程序博客网 时间:2024/04/27 03:50
Java.io 包,该包介绍:通过数据流、序列化和文件系统提供系统输入和输出
下面了解下什么是IO流 ?
- IO流是用来处理设备之间的数据传输。
- JAVA对数据的操作是通过流的方式
- 流分为输入流和输出流
- 流按操作数据分为字节流和字符流
-------------------------------------------------------------------------------------------------------------------------------------
下面介绍字符流类, 已知字符流的基类是 Reader , Writer
已知子类:
BufferedReader -------- 缓冲流 -------- BufferedWriter-------------------------------------------------------------------------------------------------------------------------------------CharArrayReader -------- 字符数组流 -------- CharArrayWriter
FilterReader -------- 过滤器流 -------- FileterWriter
InputStreamReader -------- 转换流 -------- InpuStreamWriter
PipedReader -------- 管道流 -------- PipedWriter
StringReader -------- 字符串流 -------- StringWriter
FileReader -------- 文件流 -------- FileWriter
下面通过 FileReader 文件流进行文件的读取演示:
import java.io.*;class ReaderWriter{/* 已知当前文件下,有一个test文本文件,通过FileWriter 文件字符流进行写入 */public static void main(String[] args) throws IOException {/*1. 使用 IO 流 会引发一个JAVA异常体系中的,比较常见的异常IOException需要进行捕获 (这里先不处理,抛出去)2. 在创建FileReader 对象, 需要绑定一个文件对象,该文件不存在则会引发 java.io.FileNotFoundException (系统找不到指定的文件。) */FileReader fr = new FileReader("11.txt");char[] buf = new char[1024]; //定义一个字符缓冲区,int len = 0; //用于记录文件长度while((len = fr.read(buf))!=-1) //通过 read 读取数据,将读取到的数据存入到字符缓冲区,{ //读取完后的read会返回剩余的文件长度,用len记录著,用于判断文件是否读取完毕。System.out.println(new String(buf, 0, len)); //打印每一次存储到的数据。}fr.close(); //因为FileReader底层是调用window资源,所以需要通过close方法,释放资源。因为资源是有限的,}}
下面通过 FileWriter 文件流进行文件的写入演示:
import java.io.*;class ReaderWriter{/* 已知当前文件下,有一个test文本文件,通过FileWriter 文件字符流进行写入 */public static void main(String[] args) throws IOException {/*1. 使用 IO 流 会引发一个JAVA异常体系中的,比较常见的异常IOException,需要进行捕获(这里先不处理,抛出去)2. 在创建FileWriter 对象,需要绑定一个文件对象,该文件不存在则会当前文件路径下,创建文件对象,如何存在,则会覆盖当前文件对象,3. 可以通过创建FileWriter,告诉它不用覆盖,你要续写文件 例: new FileWriter("test", true);*/FileWriter fw = new FileWriter("test.txt");for(int i = 1; i<6; i++){fw.write("第"+i+"写入数据\r\n"); //通过 write 方法写入数据,需要注意的是:他写入的数据是在缓冲区里,并不是目的文件内。fw.flush(); //需要通过 flush 方法进行刷新缓冲区,这样数据才百分百的写入到目的文件内。}/*这里需要注意是close方法底层也在调用flush方法,这让人产生错意,反正close最后都会调用flush方法,所以干脆不用我写 flush方法了。 这点是错误的。因为flush是即时刷新,可以保证数据的有效性,要是在写入的过程中,停电了,该程序没有执行到close方法就断电了,之前的写入的数据就会没有了。所以这里建议,写一次,刷新一次。*/fw.close(); //因为FileWriter底层是调用window资源,所以需要通过close方法,释放资源。因为资源是有限的,}}
使用 IO 流 会引发一个JAVA异常体系中的,比较常见的异常 IOException
下面演示常见的 IO流 异常处理方式:
import java.io.*;class ReaderWriter{/*对于IO流的捕获处理,我们需要对他们分开进行try...catch处理。每一种的异常都方式都是不一样的。1. 对文件对象的处理2. 对读写数据的处理3. 对文件对象关闭资源处理。*/public static void main(String[] args) {write();read();}public static void read(){/* 下面演示读取字符流的捕获异常处理 */FileReader fr = null;try{fr = new FileReader("test.txt");}catch(FileNotFoundException e) { throw new RuntimeException("文件不存在!"); }char[] buf = new char[1024];int len = 0;try{while((len = fr.read(buf))!=-1){System.out.println(new String(buf, 0, len));}}catch(IOException e) { throw new RuntimeException("文件读取错误!"); }finally{try{if(fr!=null)fr.close();}catch(IOException e) { throw new RuntimeException("文件读取流关闭失败!"); }}}public static void write(){/* 下面演示写入字符流的捕获异常处理 */FileWriter fw = null;try{fw = new FileWriter("test.txt", true);}catch(IOException e) { throw new RuntimeException("路径错误!"); }try{fw.write("写入数据");fw.flush();}catch(IOException e) { throw new RuntimeException("数据写入错误!"); }finally{try{if(fw!=null)fw.close();}catch(IOException e) { throw new RuntimeException("文件写入流关闭失败!"); }}}}
- 浅谈我对IO流的了解 - 字符流
- 浅谈我对IO流的了解 - 字符流缓冲区
- 浅谈我对进制间转换的了解
- 浅谈我对JAVA字符串的了解
- 浅谈我对JAVA线程的了解
- 浅谈我对反射的了解
- 浅谈我对File类的了解
- 浅谈我对Java位运算符的了解
- 浅谈我对Java异常类的了解
- 浅谈我对集合框架的了解 - List
- 浅谈我对集合框架的了解 - Set
- 浅谈IO流---字符流(一)
- 浅谈 java中 IO流 对文件的操作
- 小弟个人对IO的字符流的看法
- java.io 对字节流和字符流的讨论
- java.io 对字节流和字符流的讨论
- 浅谈JAVA的IO流
- 我对java IO流简单的理解
- 后缀数组模板解析
- <a href="http://www.pianopro.cn">通州钢琴培训</a>
- linux静态库与动态库制作
- HashMap的存储结构及原理
- substring
- 浅谈我对IO流的了解 - 字符流
- 计算机顶级会议Rankings && 英文投稿的一点经验
- Click Notes I - Overview
- Prevent the system to be got access without login
- 微软是如何失去web开发市场的
- 奇异值分解与图像压缩
- 软件开发中的质量保证
- 嵌入式BootLoader原理及实例 <一>
- 第十七周项目二——引用作形参