java控制io_Java-IO操作
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操作相关推荐
- Java标准的IO操作
java标准的IO操作 使用java IO我们可以对外界设备以相同的方式进行读写,完成数据交换 同一套操作,来操作不同的设备 java IO将"读"与"写"按照 ...
- java中的IO操作总结
java中的IO操作 在java中IO涉及的范围比较大,本文主要针对文件内容的读写 对于文件内容的操作主要分为两大类: 字符流:有两个抽象类 writer Reader 其对应子类FileWriter ...
- java中的IO操作总结(一)
转载:http://www.cnblogs.com/nerxious/archive/2012/12/15/2818848.html 所谓IO,也就是Input与Output的缩写.在java中 ...
- java中的IO操作之File类
Java的集合框架: 类和接口存在于java.util包中. Java的IO: 类和接口存在于java.io包中. 学习方法: 文档在手,天下我有! --------- ...
- Java学习笔记---IO操作
一.文件的创建 ------------------------------------------------------- File类,表示磁盘上的文件或目录,可对文件或目录进行操作. * ...
- Java之IO操作总结
所谓IO,也就是Input与Output的缩写.在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 ...
- Java学习-07 IO学习
Java学习-07 IO学习 I : 即input,代表读取.O:即output,代表输出. 1.File 主要字段: 示例: System.out.println(File.pathSeparato ...
- Android技能树 — Android存储路径及IO操作小结
前言 最近过年刚上来,打算把自己的Android知识都整理一下. Android技能书系列: Android基础知识 Android技能树 - 动画小结 Android技能树 - View小结 And ...
- Java学习笔记-IO
IO IO流概述 可以将数据传输操作,看作一种数据的流动,按照流动的方向分为输入(Input)和输出(Output) java中的IO操作主要指的是java.io包下的一些常用类的使用,通过这些常用类 ...
- JAVA基础编程——IO编程
JAVA中的IO操作主要依赖java.io包来实现,该包主要包括五个类和一个接口: 五个类:File.InputStream.OutputStream.Reader.Wirter 一个接口:Seria ...
最新文章
- Eclipse IDE for Enterprise Java Developers和JDK8与apache-tomcat-8下载地址
- Beyond Compare 3 许可证密钥被撤销
- JPA保存数据异常:org.hibernate.AnnotationException: @COLUMN(s) NOT allowed ON a @ManyToOne property
- 抄作业了!6 大 Flask 开源实战项目推荐
- ADF:在任务流终结器中支持bean作用域
- python定义区间[-5、5_有一个数 x 在区间 [-5,0] 内 , 写出其条件表达式 。 (5.0分)_学小易找答案...
- disable path length limit_通过Antsword看绕过disable_functions
- Dynamics 365的系统作业实体记录增长太快怎么回事?
- jQuery零基础入门——(三)层级选择器
- linux通过vnc掉出浏览器,VNC远程Linux桌面控制好用 --尤其是用浏览器
- 深度学习在图像语义分割中的应用
- 重构wangEditor(web富文本编辑器),欢迎指正!
- linux可执行文件的后缀是什么?
- 前加加++和后加加++的深入理解
- 小波去噪 语音去噪 信号小波去噪 小波基去噪 小波收缩去噪-matlab
- 分享一些免费的网站速度测试工具
- windows网络排查
- 索引服务器(全文索引)的使用
- linux ubantu snmp服务,ubuntu 20.04 snmp安装配置
- 微信引流方法之闲鱼引流
热门文章
- 如何对SAP Leonardo上的机器学习模型进行重新训练
- Product search parameter的determine逻辑
- 通过SAP customizing修改显示message 的type
- 打印系统里所有不包含任何错误的order list
- Report framework entry point CRM_BSP_OIC_1O_SEARCH_FROM_RF
- SAP Cloud Platform上Destination属性为odata_gen的具体用途
- SAP OData错误消息:Invalid format (return structure): Property Name ‘Guid‘, Property Value ‘000000
- add to -append Backend implementation
- 如何测试 SAP OData的filter功能
- SAP One Order redesign写操作的详细设计