Java中I/O的分析
作者:网络转载 发布时间:[ 2015/10/22 13:57:51 ] 推荐标签:测试开发技术 编程语言
其它方法:
void close():当完成写操作后,应该关闭输出流。
void flush():OutputStream类本身的flush()方法不执行任何操作,它的一些带有缓冲区的子类(比如BufferedOutputStream和PrintStream类)覆盖了flush()方法。通过带缓冲区的输出流写数据时,数据先保存在缓冲区中,积累到一定程度才会真正写到输出流中。缓冲区通常用字节数组实现,实际上是指一块内存空间。flush()方法强制把缓冲区内的数据写到输出流中
字节流子处理流
缓冲字节流: BufferedInputStream和BufferedOutputStream是缓冲字节流,它们通过减少读写I/O设备次数来加快输入输出速度。
缓冲流不能独立存在。
数据流类:DataInputStream,DateOutputStream,可以按照与平台无关的方式从流中读取基本类型(int,char和long等)的数据.
FileInputStream和FileOutputStream只能读写字节,基本类型数据和字符串用数据流进行包装。
数据流不能独立读写。
处理流不能独立存在,必须依附于结点流
字符流
字符流的基类是抽象类Reader和Writer。Reader负责输入,Writer负责输出。
Reader类是一个输入流,同样也是一个字符流。Reader类是所有输入字符流的超类,也是说所有的输入字符流都派生自Reader类,其中提供了很多关于字符流输入操作的方法
1 package src;
2
3 import java.io.File;
4 import java.io.FileNotFoundException;
5 import java.io.FileReader;
6 import java.io.FileWriter;
7 import java.io.IOException;
8
9 public class Test {
10
11 public static void main(String[] args) {
12
13 File f1=new File("d:\file1.txt");
14
15 File f2=new File("d:\file2.txt");
16
17 try {
18 FileReader fis=new FileReader(f1);
19 FileWriter fos=new FileWriter(f2);
20
21 int m;
22 while((m=fis.read())!=-1)
23 {
24 //输出到控制台上
25 //System.out.print((char)(m));
26 //输出到file2.txt文件上
27 fos.write((char)(m));
28 }
29
30 } catch (FileNotFoundException e) {
31 // TODO 自动生成的 catch 块
32 e.printStackTrace();
33 } catch (IOException e) {
34 // TODO 自动生成的 catch 块
35 e.printStackTrace();
36 }
37 }
38 }
字符流之处理流
和字节流一样,字符流也有处理流
缓冲流:BufferedReader输入流,BufferedWriter输出流
转换流:将字节流转换成字符流,InputStreamReader输入流,InputStreamWriter。、
处理流不能独立存在,必须依附于结点流。
系统类及流的概念
System类是Java语言中一个功能强大、非常有用的类,它提供了
标准输入/输出及运行时的系统信息。从System类不能创建对象,也
是说,System类的所有属性和方法都是静态的,引用时要以
System作为前缀。System.in与System.out是System类的两个静态
属性,分别对应系统的标准输入/输出流。
其中,System.in称为标准输入流,用于程序输入,通常读取用户
从键盘输入的信息;System.out称为标准输出流,用于程序输出,
通常向用户显示信息;System.err称为标准错误流,用于向用户显示
出错信息。
System.in其实也是一个字节输入流。
System.in继承自InputStream类,所以InputStream类中的方法在System.in中都有。
1 package src;
2
3 import java.io.IOException;
4
5 public class Test {
6
7 public static void main(String[] args) {
8
9 System.out.println("请输入数据:");
10 try {
11 int i = System.in.read();
12 System.out.println("输入的数据为:"+(char)i);
13 } catch (IOException e) {
14 // TODO Auto-generated catch block
15 e.printStackTrace();
16 }
17 }
18 }
1 //读取控制台信息到文件中去,当输入“q”时退出
2 package src;
3
4 import java.io.File;
5 import java.io.FileNotFoundException;
6 import java.io.FileOutputStream;
7 import java.io.IOException;
8
9 public class Test {
10
11 public static void main(String[] args) {
12
13 File f = new File("d:\file1.txt");
14 try {
15 FileOutputStream fop = new FileOutputStream(f);
16 while(true){
17 //创建缓冲数组
18 byte[] b = new byte[1024];
19 System.out.println("请输入数据:");
20 //将输入的数据放入缓冲区中,返回输入的字符串
21 int len = System.in.read(b);
22 if(b[0]=='q'){
23 System.out.println("退出");
24 break;
25 }else{
26 //将数据从0偏移开始读取len个字符
27 fop.write(b, 0, len);
28 }
29 }
30 } catch (FileNotFoundException e) {
31 // TODO Auto-generated catch block
32 e.printStackTrace();
33 } catch (IOException e) {
34 // TODO Auto-generated catch block
35 e.printStackTrace();
36 }
37
38 }
39 }
数据流
FileInputStream和FileOutputStream只能读写字节,如果我们要读写int、double或者字符串类型要使用数据流进行包装。
数据流用DataInputStream和DataOutputStream类,不能独立读写,必须对字节流进行包装后才能读写数据。数据流也是一种字节流。
DataInputStream类
构造方法
DataInputStream(InputStream in)
成员方法
boolean readBoolean() //从输入流读取一个布尔值。
byte readByte() //从输入流读取一个byte值。
char readChar() //从输入流读取一个char值。
double readDouble() //从输入流读取一个double值。
float readFloat() //从输入流读取一个float值。
int readInt() //从输入流中读取一个int值。
String readUTF() //将输入流放回UTF字符串。

缓冲流(字符流)
BufferedReader和BufferedWriter类的作用与BufferedInputStream和BufferedOutputStream一样,通过内存缓冲区来减少I/O设备读写响应次数来提高输入输出速度。
BufferedReader和BufferedWriter是针对字符的缓冲输入输出流。同样它也不能独立读写数据必须包装字符流进行读写工作。
转换流
有时候我们需要将字节流转换成字符流,并且将字节流中读取到的字节按照指定字符集转换成字符并输入显示,或者将要写入的字符按照指定字符集转换成字节输出存储。这个时候需要用到转换流。
JavaSE API提供了两个转换流:InputStreamReader和OutputStreamWriter。前者用于字节输入流的转换,后者用于字节输出流的转换。

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
Java性能测试有哪些不为众人所知的原则?Java设计模式??装饰者模式谈谈Java中遍历Map的几种方法Java Web入门必知你需要理解的Java反射机制知识总结编写更好的Java单元测试的7个技巧编程常用的几种时间戳转换(java .net 数据库)适合Java开发者学习的Python入门教程Java webdriver如何获取浏览器新窗口中的元素?Java重写与重载(区别与用途)Java变量的分类与初始化JavaScript有这几种测试分类Java有哪四个核心技术?给 Java开发者的10个大数据工具和框架Java中几个常用设计模式汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等

sales@spasvo.com