Java之IO流
2016-05-04 11:32
387 查看
1、名词理解:
(一)首先要明白何为输入流、输出流、字节流、字符流
①输入与输出:
②字节与字符:
字节流:以字节为单位读取数据字符流:以字符为单位读取数据
(二)然后四个互相结合就有了:输入字节流、输出字节流、输入字符流、输出字符流。
(三)辨别输入流、输出流、字节流、字符流:
①类名中有In的为输入流,有Out的为输出流
②类名以Stream结尾的为字节流
③类名以Reader或Writer结尾,并且里面没有Stream的为字符流
④类名中同时包含Stream和Reader或Stream和Writer,不属于这四种流
2、实际应用(本地文件的读取与写入,测试前别忘了在本地建好测试的文件):
(一)字节输入流:
File file = new File("C:/java.txt"); //创建本地文件对象,路径可以根据自己的需要修改 FileInputStream fileInputStream = new FileInputStream(file); //创建字节输入流对象 byte[] bs = new byte[fileInputStream.available()]; // available()返回文件中的字节数 fileInputStream.read(bs); // 将文件的数据以字节的方式读到bs中 String string = new String(bs); // 字节数组变为字符串 fileInputStream.close(); // 关闭输入流 System.out.println(string);
(二)字节缓冲输入流:
File file = new File("C:/java.txt"); BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(file)); // 在字节输入流的基础上再加工成字节缓冲输入流 int value = 0; String result; byte[] bs = new byte[new FileInputStream(file).available()]; bufferedInputStream.read(bs); // while ((value = bufferedInputStream.read(bs)) != -1) { // // 直到读完全部数据,但测试了下是一次性读完的 // } // 也可以用while这样写 System.out.println(new String(bs));
加缓冲的好处是为了提交读文件的效率,下面的缓冲也是同理
(三)字节输出流:
File file_ = new File("C:/java.txt"); FileOutputStream fileOutputStream = new FileOutputStream(file_, true); // FileOutputStream的第二个参数为是否追加(append) fileOutputStream.write("FileOutputStream测试\r\n".getBytes()); // \r\n 换行后回车,getBytes将字符串转换成字节类型 fileOutputStream.flush(); // 刷新数据或提交数据 fileOutputStream.close();
(四)字节缓冲输出流:
File file_ = new File("C:/java.txt"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file_, true)); // FileOutputStream的第二个参数为是否追加(append), 在字节输出流的基础上再加工成字节缓冲输出流 bufferedOutputStream.write("BufferefOutputStream测试\r\n".getBytes()); bufferedOutputStream.flush(); bufferedOutputStream.close();
(五)字符输入流+字符缓冲输入流:
// 字符输入流 File file = new File("C:/java.txt"); FileReader fileReader = new FileReader(file); char[] cs = new char[1024]; // 固定字符数组的长度 fileReader.read(cs); // 读取 System.out.println(new String(cs)); // 字符缓冲输入流 FileReader fileReader1 = new FileReader(file); // 用过一次后不能重复使用 BufferedReader bufferedReader = new BufferedReader(fileReader1); // 继续加工 String s = ""; String result = ""; while ((s = bufferedReader.readLine()) != null) { // 先将文件中的数据一行行的赋给s,如果不为空说明还没有读完 result += s; } System.out.println(result); // 关闭的时候从大到小关 fileReader.close(); bufferedReader.close(); fileReader1.close();
(六)字符输出流+字符缓冲输出流:
File file = new File("C:/java.txt"); FileWriter fileWriter = new FileWriter(file, true); fileWriter.write("FileWriterTest测试\r\n"); fileWriter.flush(); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter); bufferedWriter.write("BufferedWriter测试\r\n"); bufferedWriter.flush(); bufferedWriter.close(); fileWriter.close(); //没有任何特别地东西
(七)字符字节混合使用:
File file = new File("C:/java.txt"); FileInputStream fileInputStream = new FileInputStream(file); // 字节流读取文件 InputStreamReader inputStreamReader = new InputStreamReader( fileInputStream); // 转换成字符流 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // 再用字符流对数据进一步加工 String s; while ((s = bufferedReader.readLine()) != null) { System.out.println(s); }
3、IO流应用很广泛,例如在客户端与服务端之间数据的传送与读取也可以借助IO流去实现,只不过在它们那里是截取流,不是像读取文件这样创建流。在我另一篇博客上也有说明,
网址:http://blog.csdn.net/zhengyikuangge/article/details/50000481
相关文章推荐
- java 利用JAX-RS快速开发RESTful 服务
- spring事务隔离级别
- Java核心技术(四) —— 继承(1)
- java 调用webservice的各种方法总结
- 深入探究TimSort对归并排序算法的优化及Java实现
- myeclipse10合成svn
- java
- JAVA获取字符串或者文件的MD5值
- jsp3 javabean
- Java正则表达式基础<一>
- java导入项目乱码
- Java -- ArrayList排序
- JDK,JRE,JVM区别与联系
- 从I/O流里面读取数据
- [Java视频笔记]day15
- eclipse如何导入一个library
- java四大名著
- 最长括号匹配问题
- java的json时间转换为年月日
- java中的运算符