Java IO系统学习之各种输入输出流篇
来源:互联网 发布:unity3d 逐帧动画 编辑:程序博客网 时间:2024/06/05 17:17
上一篇简单写了Java IO流中的File类,一般我们操作文件时肯定会用到此类。这次我们来看下Java IO中其他的输入输出类。
首先,说到“输入”、“输出”要明确一点
输入:从文件(或数据源) =========》系统(或程序)
输出:从系统(或程序)=========》文件(或数据源)
贴上一段摘抄的原话:
流(stream)的概念源于 UNIX 中管道(pipe)的概念。在 UNIX 中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。
一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是 Internet 上的某个 URL。
流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。
实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,
只是简单地往流中写数据。形象的比喻——水流 ,文件======程序 ,文件和程序之间连接一个管道,水流就在
之间形成了,自然也就出现了方向:可以流进,也可以流出.便于理解,这么定义流: 流就是一个管道里面有流水,这个管道连接了文件和程序。
java中流的分类有几种
1.按流的方向分为:输出流、输入流
2.按流的类型分为:字符流、字节流
我们主要来看下常用的一些JAVA IO 类的操作和用法和互相转换的使用的例子
1.复制文件
public static void CopyFile() throws Exception{String pathName = "d:"+File.separator+"test2.txt"; //D盘已经存在此文件text2.txtString pathName2 = "d:"+File.separator+"test3.txt";File f = new File(pathName);File f2= new File(pathName2);InputStream in = new FileInputStream(f);OutputStream out = new FileOutputStream(f2);if(in!=null & out!=null){int temp = 0;while((temp=in.read())!=-1){out.write(temp);}}in.close();out.close();}
2.将字节流转换为字符流输出 和 将字节输入流变成字符输入流
public static void OutPutStreamWriter() throws Exception{String pathName = "d:"+File.separator+"test3.txt";File f = new File(pathName);Writer w = new OutputStreamWriter(new FileOutputStream(f));w.write("将字节流转换为字符流输出!");w.close();}
public static void InputStreamRead() throws Exception{String pathName = "d:"+File.separator+"test2.txt";File f = new File(pathName);Reader read = new InputStreamReader(new FileInputStream(f));char[] ch = new char[(int)f.length()];int tem = 0;int count = 0;while((tem=read.read())!= -1){ch[count++] = (char)tem;}System.out.println(new String(ch,0,count));read.close();}
3.使用内存流操作
public static void byteArrayInputStream() throws Exception{String tempStr = "abcdefghigklmn..";ByteArrayInputStream byteArray = new ByteArrayInputStream(tempStr.getBytes());ByteArrayOutputStream outbyte = new ByteArrayOutputStream();int t = 0;while((t=byteArray.read())!= -1){char ch = (char)t;outbyte.write(Character.toUpperCase(ch));}byteArray.close();outbyte.close();System.out.println(outbyte.toString());}
4.输出重定向
public static void outputStream()throws Exception{System.out.println("我就是我");System.setOut(new PrintStream(new FileOutputStream(new File("d:\\test1.txt"))));System.out.println("我的输出内容竟然跑到文件里来了!!!!");}那么从上面的代码操作中我们可以慢慢捋出来java IO中的类的一些含义
文件操作流类 管道流(线程间通信)回退流
还有一些我就不再阐述了大体从字面上就能看出作用,我们再来看下压缩和解压缩文件
文件压缩和解压缩 ZipInputStream ZipOutputStream
压缩
11. File file = new File("d:"+ File.separator + "hello.txt");12. File zipFile = new File("d:"+ File.separator + "hello.zip");13. InputStream input = new FileInputStream(file);14. ZipOutputStream zipOut = new ZipOutputStream( new FileOutputStream(15. zipFile));16. zipOut.putNextEntry( new ZipEntry(file.getName()));17. // 设置注释18. zipOut.setComment("hello");19. int temp = 0;20. while ((temp = input.read()) != -1){21. zipOut.write(temp);22. }23. input.close();24. zipOut.close();
压缩多个文件
14. // 要被压缩的文件夹15. File file = new File("d:"+ File.separator + "temp");16. File zipFile = new File("d:"+ File.separator + "zipFile.zip");17. InputStream input = null ;18. ZipOutputStream zipOut = new ZipOutputStream( new FileOutputStream(19. zipFile));20. zipOut.setComment("hello");21. if (file.isDirectory()){22. File[] files = file.listFiles();23. for ( int i = 0; i < files.length; ++i){24. input = new FileInputStream(files[i]);25. zipOut.putNextEntry(newZipEntry(file.getName()26. + File.separator + files[i].getName()));27. int temp = 0;28. while ((temp = input.read()) != -1){29. zipOut.write(temp);30. }31. input.close();32. }33. }34. zipOut.close();
解压缩
14. File file = new File("d:"+ File.separator + "hello.zip");15. File outFile = new File("d:"+ File.separator + "unZipFile.txt");16. ZipFile zipFile = new ZipFile(file);17. ZipEntry entry = zipFile.getEntry("hello.txt");18. InputStream input = zipFile.getInputStream(entry);19. OutputStream output = new FileOutputStream(outFile);20. int temp = 0;21. while ((temp = input.read()) != -1){22. output.write(temp);23. }24. input.close();25. output.close();解压缩多个文件
16. File file = new File("d:"+ File.separator + "zipFile.zip");17. File outFile = null ;18. ZipFile zipFile = new ZipFile(file);19. ZipInputStream zipInput = newZipInputStream( new FileInputStream(file));20. ZipEntry entry = null ;21. InputStream input = null ;22. OutputStream output = null ;23. while ((entry = zipInput.getNextEntry()) != null ){24. System.out.println("解压缩" + entry.getName() + "文件");25. outFile = new File("d:"+ File.separator + entry.getName());26. if (!outFile.getParentFile().exists()){27. outFile.getParentFile().mkdir();28. }29. if (!outFile.exists()){30. outFile.createNewFile();31. }32. input = zipFile.getInputStream(entry);33. output = new FileOutputStream(outFile);34. int temp = 0;35. while ((temp = input.read()) != -1){36. output.write(temp);37. }38. input.close();39. output.close();
到这里基本上IO的基本用法就算是完了!
- Java IO系统学习之各种输入输出流篇
- java之io类,输入输出流学习
- Java IO之输入输出流
- Java输入输出IO学习
- IO输入输出流学习笔记(第二篇)(JAVA)
- 第二十篇:JAVA输入输出(IO)之字节流
- 第二十二篇:JAVA输入输出(IO)之常用流
- JAVA输入输出(IO)之字节流
- JAVA输入输出(IO)之字符流
- JAVA输入输出(IO)之常用流
- java IO之文件输入输出流
- Java基础之IO输入输出流
- IO流之输入输出
- Java IO输入输出流
- java io 输入输出流
- Java IO(输入输出流)
- Java输入输出流IO
- JAVA-IO输入输出流
- 写博客的规则
- canvas把图片绘制上画布
- "Mon Dec 31 00:00:00 CST 2012"格式的字符串转时间格式
- 数组与集合的详解
- ios——显示明天的日期
- Java IO系统学习之各种输入输出流篇
- 软件测试-系统测试类别
- 位运算
- xhtml+css笔记
- qwdqd
- [Wondgirl] 微信小程序(二)视图渲染
- 小码哥-玩转【斗鱼直播APP】系列之项目部署
- 多线程的详解
- C++中,在循环中用“!=”与“<”的区别