IO流包括字节流(Byte)和字符流(String/char)

字节流:

在JDK中定义了两个抽象类InputStream和OutputStream,它们是字节流的顶级父亲。

InputStream的常用方法:

int read(),从输入流读取一个8位的字节,把它转换为0~255之间的整数,并返回这一整数。

int read(byte[] b ),从输入流读取若干个字节,把它们保存到参数b指定的字节数组中,返回的整数表示读取字节数。

int read(byte[] b ,int  off,int len),从输入流读取若干个字节,把它们保存到参数b指定的字节数组中,off指定字节数组开始保存数据的起始下标,len表示读取的字节数目。

void close() 关闭此输入流并释放与该流关联的所有系统资源。

OutputStream的常用方法:

void write(),像输出流写入一个8位的字节。

void write(byte[] b ),参数b指定的字节数组的所有字节写到输出流。

void read(byte[] b ,int  off,int len),把参数b指定的字节数组中从off指定开始的len个字节写入输入流。

void flush(),刷新此输出流并强制写出所有缓冲的输出字节。

void close() 关闭此输出流并释放与该流关联的所有系统资源。

FileInputStream

packagestream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;public classFileInputStreamDemo{public static voidmain(String[] args) {

File srcFile=new File("CopyStreamDemo.txt");try{

InputStream inputStream=newFileInputStream(srcFile);byte[] buffer=new byte[1024];int len=-1;while((len=inputStream.read(buffer))!=-1) {//从输入流inputStream读取若干字节,把它们保存到参数buffer中去,同时判断是否读到文件末尾

String text=new String(buffer,0, len, "utf-8");//将字节数组转换为字符串

System.out.printf(text);

}

inputStream.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {

e.printStackTrace();

}

}

}

FileOutputStream

1 packagestream;2

3 importjava.io.File;4 importjava.io.FileNotFoundException;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.OutputStream;8

9 public classFileOutputStreamDemo {10

11 public static voidmain(String[] args) {12 File desfile=new File("target.txt");13 try{14 String text="我的第一个记事本程序\r\n还有第二行";15 OutputStream os=newFileOutputStream(desfile);16 byte[] buffer=text.getBytes("utf-8");//将字符串转换为字节数组17 os.write(buffer);18 System.out.println("文件写入完成!");19 os.close();20 } catch(FileNotFoundException e) {21 e.printStackTrace();22 } catch(IOException e) {23 e.printStackTrace();24 }25 }26 }

此外,注意在IO包中提供的两个带缓冲的字节流,BufferedInputStream和BufferedOutputStream,它们的构造方法中分别接收InputStream和OutputStream类型的参数作为被包装的对象。

1 importjava.io.BufferedInputStream;2 importjava.io.BufferedOutputStream;3 importjava.io.File;4 importjava.io.FileInputStream;5 importjava.io.FileNotFoundException;6 importjava.io.FileOutputStream;7 importjava.io.IOException;8

9 public classFileCopy{10 public static voidmain(String[] args) {11 File srcFile=new File("CopyStreamDemo.txt");12 File desFile=new File("target.java");13 try{14 /**

15 * 带缓冲的字节流,BufferedInputStream和BufferedOutputStream,二者接收InputStream和OutputStream作为参数16 */

17 BufferedInputStream is=new BufferedInputStream(newFileInputStream(srcFile));18 BufferedOutputStream os=new BufferedOutputStream(newFileOutputStream(desFile));19 byte[] buffer=new byte[1024];20 int len=-1;21 System.out.println("正在复制文件,请稍后...");22 while((len=is.read(buffer))!=-1) {23 os.write(buffer,0,len);24 }25 System.out.println("文件复制完成!");26 is.close();27 os.close();28 } catch(FileNotFoundException e) {29 e.printStackTrace();30 } catch(IOException e) {31 e.printStackTrace();32 }33 }34 }

字符流:

字符流也有两个顶级父亲,分别是Reader和Writer,其中Reader是字符输入流,用于从某个源设备读取字符,Writer是字符输出流,用于向某个目标设备写入字符。

其中,FileReader和FileWriter用于读写文件,BufferedReader和BufferedWriter是具有缓冲功能的流,它们可以提高读写效率。

FileReader和FileWriter实现文件读写:

1 packagechars;2

3 importjava.io.File;4 importjava.io.FileNotFoundException;5 importjava.io.FileReader;6 importjava.io.FileWriter;7 importjava.io.IOException;8 importjava.io.Reader;9 importjava.io.Writer;10

11 public classCopyByCharsDemo {12 public static voidmain(String[] args) {13 File srcFile=new File("BufferedReaderDemo.txt");14 File desFile=new File("dest.txt");15 try{16 Reader reader=newFileReader(srcFile);17 Writer writer=newFileWriter(desFile);18 char[] buffer=new char[1024];19 int len=-1;20 while((len=reader.read(buffer))!=-1) {21 writer.write(buffer);22 }23 System.out.println("复制完成!");24 reader.close();25 writer.close();26 } catch(FileNotFoundException e) {27 e.printStackTrace();28 } catch(IOException e) {29 e.printStackTrace();30 }31

32 }33 }

BufferedReader

1 packagechars;2

3 importjava.io.BufferedReader;4 importjava.io.File;5 importjava.io.FileNotFoundException;6 importjava.io.FileReader;7 importjava.io.IOException;8 /**

9 * 文件Reader,BufferedReader同BufferedInputStream一样,内部参数是new FileReader(srcFile)10 *@authorAdministrator11 *12 */

13 public classBufferedReaderDemo {14 public static voidmain(String[] args) {15 File srcFile=new File("CopyByCharsDemo.txt");16 try{17 BufferedReader bReader=new BufferedReader(newFileReader(srcFile));18 String res=null;19 while((res=bReader.readLine())!=null) {//每次读取一行文本,判断是否到文件结尾

20 System.out.println(res);21 }22 bReader.close();23 } catch(FileNotFoundException e) {24 e.printStackTrace();25 } catch(IOException e) {26 e.printStackTrace();27 }28 }29

30 }

总结:

1.文件读取时,不论是用InputStream还是Reader还是BufferedInputStream读取时都用len,while((len=is.read(buffer))!=-1),但是在BufferedReader中,定义一个String res=null,这时的判断条件是 while((res=br.readLine())!=null)

2.文件读写完成后,记得要善后,即is.close()

java控制io_Java-IO操作相关推荐

  1. Java标准的IO操作

    java标准的IO操作 使用java IO我们可以对外界设备以相同的方式进行读写,完成数据交换 同一套操作,来操作不同的设备 java IO将"读"与"写"按照 ...

  2. java中的IO操作总结

    java中的IO操作 在java中IO涉及的范围比较大,本文主要针对文件内容的读写 对于文件内容的操作主要分为两大类: 字符流:有两个抽象类 writer Reader 其对应子类FileWriter ...

  3. java中的IO操作总结(一)

    转载:http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.html    所谓IO,也就是Input与Output的缩写.在java中 ...

  4. java中的IO操作之File类

    Java的集合框架:  类和接口存在于java.util包中. Java的IO:               类和接口存在于java.io包中. 学习方法:  文档在手,天下我有! --------- ...

  5. Java学习笔记---IO操作

    一.文件的创建 ------------------------------------------------------- File类,表示磁盘上的文件或目录,可对文件或目录进行操作.    * ...

  6. Java之IO操作总结

    所谓IO,也就是Input与Output的缩写.在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 ...

  7. Java学习-07 IO学习

    Java学习-07 IO学习 I : 即input,代表读取.O:即output,代表输出. 1.File 主要字段: 示例: System.out.println(File.pathSeparato ...

  8. Android技能树 — Android存储路径及IO操作小结

    前言 最近过年刚上来,打算把自己的Android知识都整理一下. Android技能书系列: Android基础知识 Android技能树 - 动画小结 Android技能树 - View小结 And ...

  9. Java学习笔记-IO

    IO IO流概述 可以将数据传输操作,看作一种数据的流动,按照流动的方向分为输入(Input)和输出(Output) java中的IO操作主要指的是java.io包下的一些常用类的使用,通过这些常用类 ...

  10. JAVA基础编程——IO编程

    JAVA中的IO操作主要依赖java.io包来实现,该包主要包括五个类和一个接口: 五个类:File.InputStream.OutputStream.Reader.Wirter 一个接口:Seria ...

最新文章

  1. Eclipse IDE for Enterprise Java Developers和JDK8与apache-tomcat-8下载地址
  2. Beyond Compare 3 许可证密钥被撤销
  3. JPA保存数据异常:org.hibernate.AnnotationException: @COLUMN(s) NOT allowed ON a @ManyToOne property
  4. 抄作业了!6 大 Flask 开源实战项目推荐
  5. ADF:在任务流终结器中支持bean作用域
  6. python定义区间[-5、5_有一个数 x 在区间 [-5,0] 内 , 写出其条件表达式 。 (5.0分)_学小易找答案...
  7. disable path length limit_通过Antsword看绕过disable_functions
  8. Dynamics 365的系统作业实体记录增长太快怎么回事?
  9. jQuery零基础入门——(三)层级选择器
  10. linux通过vnc掉出浏览器,VNC远程Linux桌面控制好用 --尤其是用浏览器
  11. 深度学习在图像语义分割中的应用
  12. 重构wangEditor(web富文本编辑器),欢迎指正!
  13. linux可执行文件的后缀是什么?
  14. 前加加++和后加加++的深入理解
  15. 小波去噪 语音去噪 信号小波去噪 小波基去噪 小波收缩去噪-matlab
  16. 分享一些免费的网站速度测试工具
  17. windows网络排查
  18. 索引服务器(全文索引)的使用
  19. linux ubantu snmp服务,ubuntu 20.04 snmp安装配置
  20. 微信引流方法之闲鱼引流

热门文章

  1. 如何对SAP Leonardo上的机器学习模型进行重新训练
  2. Product search parameter的determine逻辑
  3. 通过SAP customizing修改显示message 的type
  4. 打印系统里所有不包含任何错误的order list
  5. Report framework entry point CRM_BSP_OIC_1O_SEARCH_FROM_RF
  6. SAP Cloud Platform上Destination属性为odata_gen的具体用途
  7. SAP OData错误消息:Invalid format (return structure): Property Name ‘Guid‘, Property Value ‘000000
  8. add to -append Backend implementation
  9. 如何测试 SAP OData的filter功能
  10. SAP One Order redesign写操作的详细设计