java_IO流小结
2016-07-26 20:20
531 查看
字符流和字节流的主要区别:
1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。
[b] 字节流:[/b]
1、通过字节流写数据
code:
2、通过字节流读数据:
code:
3、使用字节流读写数据
code:
4、使用带缓冲的字节流读写数据(字节流模板)
code:
[b] 字符流:[/b]
1、使用字符流读写数据
code:
2、使用带有缓冲的字符流读写数据(字符流模板)
code:
1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。
[b] 字节流:[/b]
1、通过字节流写数据
code:
package com.test; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.UnsupportedEncodingException; public class WriteByteStream { public static void main(String[] args) { try { FileOutputStream fos = new FileOutputStream("textw.txt"); String outString = "write 123456写出数据"; byte output[] = outString.getBytes("UTF-8"); fos.write(output); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2、通过字节流读数据:
code:
package com.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.UnsupportedEncodingException; public class ReadByteStream { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("text.txt"); byte input[] = new byte[21]; fis.read(input); String inputString = new String(input, "UTF-8"); System.out.println(inputString); fis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
3、使用字节流读写数据
code:
package com.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class CopyByByteStream { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("movie.mp4"); FileOutputStream fos = new FileOutputStream("movie_new.mp4"); byte input[] = new byte[50]; long before = System.currentTimeMillis(); int count = 0; while (fis.read(input) != -1) { fos.write(input); count++; } fos.flush(); fis.close(); fos.close(); System.out.println(System.currentTimeMillis()-before+"ms"); System.out.println("done"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
4、使用带缓冲的字节流读写数据(字节流模板)
code:
package com.test; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class ReadByBufferedByteStream { public static void main(String[] args) { try { FileInputStream fis = new FileInputStream("movie.mp4"); BufferedInputStream bis = new BufferedInputStream(fis,1000000); FileOutputStream fos = new FileOutputStream("moive_new.mp4"); BufferedOutputStream bos = new BufferedOutputStream(fos,1000000); //大型文件对应的数组可以大一些,小文件对应的数组小一些 byte input[] = new byte[100000]; int count = 0; long before = System.currentTimeMillis(); while (bis.read(input) != -1) { bos.write(input); count++; } bos.flush(); bis.close(); fis.close(); bos.close(); fos.close(); System.out.println(System.currentTimeMillis()-before+"ms"); System.out.println("读取了:"+count+"次"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
[b] 字符流:[/b]
1、使用字符流读写数据
code:
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; public class RWByCharStream { public static void main(String[] args) { try { //File file = new File("java.txt"); FileInputStream fis = new FileInputStream("java.txt"); FileOutputStream fos = new FileOutputStream("java_new.txt"); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); char input[] = new char[100]; int l = 0; while ((l = isr.read(input)) != -1) { //String inputString = new String(input,0,l); osw.write(input,0,l); } isr.close(); fis.close(); osw.close(); fos.close(); System.out.println("done"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
2、使用带有缓冲的字符流读写数据(字符流模板)
code:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; public class RWByBufferedCharStream { public static void main(String[] args) { try { //File file = new File("java.txt"); FileInputStream fis = new FileInputStream("java.txt"); FileOutputStream fos = new FileOutputStream("java_new_buff.txt"); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); BufferedReader br = new BufferedReader(isr); //BufferedWriter bw = new BufferedWriter(osw); PrintWriter pw = new PrintWriter(osw,true); String input; while ((input = br.readLine()) != null) { //bw.write(input); pw.println(input); } br.close(); //bw.flush();bw.close(); pw.close(); isr.close(); fis.close(); osw.close(); fos.close(); System.out.println("done"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- springmvc mockmvc集成测试
- 一、搭建移动应用服务器
- java之通过JDBC访问Mysql数据库
- SpringAOP注解方式记录操作日志(操作模块,操作功能,调用方法,主键信息等)支持多笔操作时记录
- 快速排序(java实现)
- JAVA面向对象 类的继承
- hibernate和spring的整合
- Java---设计模式(DAO)
- java 堆栈
- Java 死锁的例子
- JAVA__ 上转型和下转型
- 通过java解析域名获得IP地址
- Java NIO使用及原理分析 (四)
- 使用数组实现链表--Java
- Java NIO使用及原理分析(三)
- Pixhawk windows开发环境安装
- Java 面向对象(转)
- Java NIO使用及原理分析(二)
- Java NIO使用及原理分析 (一)
- Java IO流(二)_day21