`
peihong-ph
  • 浏览: 21231 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java中的各种流

阅读更多
* 1、什么是流?
*
* 2、在java语言中,流的分类?
* 1) 方向性: 输入流(将东西输入内存为输入)和输出流(将东西从内存中取出为输出)。
* 2) 处理单位:字节流和字符流。
* 3) 是否有数据源:节点流和处理流。
*
* 3、在java语言中,所有的流类均来自java.io.*; 包。同时,它们由四个抽象的流类派生而来。
* 1) InputStream 和 OutputStream 字节的输入/输出流。
*
* 2) Reader 和 Writer 字符的输入/输出流。
*
* 4、抽象的字节输入流类: InputStream ,它提供的常用方法如下:
* 1) int read(); 用来读取一个字节,反馈其对应的整数,范围为[0,255];若反馈的是-1,表明读取完毕。
*
* 2) void close(); 用来关闭字节输入流,释放所占资源,确保数据安全。
*
* 5、抽象的字节输出流类: OutputStream ,它提供的常用方法如下:
* 1) void write(int x); 用来将给定的整数以字节方式输出,若该整数超出了[0,255]的范围,则输出后会失真。
*
* 2) void flush(); 用来将缓冲区中的数据一次性输出到目的地,确保数据输出成功。
*
* 3) void close(); 用来关闭字节输出流,释放所占资源,确保数据安全。
*
* 6、抽象的字符输入流类: Reader ,它提供的常用方法如下:
* 1) int read();  用来读取一个字符,反馈其对应的整数,范围
* 为[0,65535]。若反馈整数是 -1 ,则表明读取完毕。
*
* 2) void close(); 用来关闭字符输入流,释放所占资源。确保数据安全。
*
* 7、抽象的字符输出流类: Writer ,它提供的常用方法如下:
* 1) void write( int x ); 用来将给定的整数以字符方式输出,该整数的的范围为[0,65535]。它在处理汉字时,不会乱码。
*
* 2) void flush(); 用来将缓冲区中的数据一次性输出到目的地,确保数据输出成功。
*
* 3) void close(); 用来关闭字符输出流,释放所占资源,确保数据安全。
*
* 8、针对文件操作(用来读取或存储文件)的类有两对?
* 1) 文件的字节输入/输出流类:FileInputStream 和 FileOutputStream,它们分别继承自 InputStream 和 OutputStream 。
*
* 2) 文件的字符输入/输出流类:FileReader 和 FileWriter ,它们分别继承自 Reader 和 Writer 。
*
* 9、FileInputStream 文件的字节输入流类的作用:
* 1) 它用来以字节方式读取文件内容。
* 2) 它通常通过 int read(); 和 void close(); 两个方法实现文件内容的读取和输入流的关闭。
*
* 10、FileOutputStream 文件的字节输出流类的作用:
* 1) 它用来以字节方式将给定的数据输出。
* 但是,要注意:当给定的数据超出[0,255]范围时,输出后会失真。
* 2) 它通常通过 void write(int x)、void flush()和void close()三个方法完成输出和关闭功能。
*
* 将FileInputStream和FileOutputStream结合起来实现文件的复制。


* 1、FileReader 文件的字符输入流类及其应用:
* 1) 它以字符的方式读取文件的内容。
*
* 2) 它的常用方法: int read() 和 void close() 两个方法来实现读取和关闭。
*
* 3) 通过案例来掌握FileReader类的应用。
*
* 2、FileWriter 文件的字符输出流类及其应用:
* 1) 它以字符的方式将给定的数据存盘。
*
* 2) 它的常用方法: void write(int x)、void flush()和void close()三个
* 方法实现数据的存盘和输出流的关闭。
*
* 3) 它的特有方法: void write(String str); 将给定的串存盘。
*
*
结论:  FileReader和FileWriter两个类只用来处理文本文件,不能处理其它特殊文件。
注:文件的换行隐藏着\r\n这两个字符
* 1、java语言中来源java.io.*包的 File类及其应用。
*
* 1) File类的作用: 用来管理计算机的资源(管理文件和文件夹)。
*
* 2) File类提供一些常用的方法用来管理文件和目录。
通过File对象可以访问文件的属性:
* boolean canRead();   canWrite();   exists();
isDirectory();     isFile();  isHidden();
long   lastModified();    length();
String  getName();      getPath();
通过File对象创建空文件或目录
Boolean  createNewFile();   delete();
mkdir();   mkdirs();
Void     deleteOnExit();//退出时删除
String[]   list();
File f=new File(path);
File[] fi=f.listFiles();或String[] fi=f.list();
File的静态属性separator存储了当前系统的路径分隔符
* String path = System.getProperty("user.dir");为当前路径
创建目录时注意:File f=new File(path,filename);
boolean a=f.getParentFile().mkdirs();
*
* 1、java语言中的缓冲流有两对:
* 1) 缓冲的字节输入/输出流: 
* BufferedInputStream 和 BufferedOutputStream ;
*
*  2) 缓冲的字符输入/输出流:
*  BufferedReader  和  BufferedWriter .

*  2、缓冲流出现的目的是什么?
*  目的就是提高输入/输出的效率。

*  它属于处理流,需要套接在节点流上。
*  通常缓冲的字节输入/输出流套接在字节输入/输出
*  (如: 文件的字节输入/输出流)上。

*  缓冲的字符输入/输了流需要套接在字符输入/输出
*  (如: 文件的字符输入/输出流)上

*  3、缓冲流的特有方法:
*  mark( int x ); 用来作标记。
*  reset();  用来返回到标记。

*  而BufferedReader缓冲的字符输入流拥有一个 String readLine()方法用来读取一行。

*  而BufferedWriter缓冲的字符输出流拥有一个 void newLine()方法,用来产生一个新行。另外它还有 void writer(String str)用来将字符串输出

* 在java语言中,提供了缓冲流来实现快速传递数据的功能。
*
* java语言提供了两对缓冲流类: 
* 一对: BufferedInputStream 和 BufferedOutputStream 缓冲的字节输入/输出流。
* 另一对: BufferedReader 和 BufferedWriter 缓冲的字符输入/输出流。
快速复制任意类型的文件:
BufferedInputStream 和 BufferedOutputStream
关闭流的顺序:
bis.close(); //关闭缓冲字节输入流( 处理流 )
fis.close();//关闭文件的字节输入流( 节点流 )
bos.close();//关闭缓冲字节输入流( 处理流 )
fos.close();//关闭文件的字节输入流( 节点流 )

* 1、来自java.io.*包的 LineNumberReader 以行的方式读取文本文件的内容,它是一个处理流。因此,它需要套接在节点流,通常套接在FileReader类的对象上。
*
* 2、LineNumberReader类的常用方法:
* getLineNumber(); 用来获取行号;
* readLine(); 读取一行内容。

以行的方式读取文本文件的内容。
* 2、java语言中的数据流: DataInputStream和DataOutputStream.
*
* 1) DataInputStream和DataOutputStream称之为数据的字节输入输出流。
*
* 2) 它们的功能是什么?
* 用来处理八种基本类型的数据和字符串。
* 即:它把基本类型的数据看成是一个整体。如: 3.156 看成是一个double型的数据,而不是由3、.、1、5、6这五个字符组成的数据。因此,数据类特别适合在网络上传递基本类型的数据。
*
* 3) 数据流提供了一些专门针对八种基本类型数据和字符串操作的方法。
* writeByte();   readByte();
* writeShort(); readShort();
* writeInt(); readInt();
* ...
*
* writeUTF(); readUTF();  //用来输出或输入字符串
*
* 4) 数据流也属于处理流,通常需要套接在节点流。如:套接在
* FileInputStream和FileOutputStream(数据流特别适合在网络上传递基本类型的数据或字符串)。


* 3、java语言中的对象流:  ObjectInputStream 和 ObjectOutputStream .
*
* 1) ObjectInputStream 和 ObjectOutputStream 称之为对象的字节输入、输出流。
*
* 2) 它们用来处理对象。即:将对象存盘到文件中或从文件中读取对象。
*
* 3) 它们属于处理流,通常需要套接在节点流,如: FileInputStream
* 和 FileOutputStream 流上。
*
* 4) 如何将对象存盘到文件中去,又如何从文件中读取的是对象。
*

* 1、java语言中的转换流有两个:
* 1) InputStreamReader ,它是一个字节转换成字符,以字符方式读取数据的一个转换流。(该方法的返回值是Reader)
*
* 2) OutputStreamWriter ,它是一个字符转换成字节,以字节方式输出数据。
*
* 2、在什么情况下需要转换流?
* 当给的是字节流,而要的是字符流时,则需要转换。
* 当给的是字符流,而要的是字节流时,则需要转换。
*
* 3、转换流也属于处理流。因此,它们也需要套接在节点流上。
*
* 4、在创建转换流时,还可指定字符的编码集。
*
* 5、通过 FileOutputStream 来存储汉字时会乱码,然而,可通过转换流OutputStreamWriter 来解决。
*
* 6、通过 FileInputStream 来读取带汉字的文件内容时会乱码,然而,
* 也可通过转换流InputStreamReader来解决。
*
* 7、java控制台的输入是通过 java.util.Scanner类来实现的。
* java5.0以前没有Scanner类,那它是如何输入的?
* 答案: 采用流技术来实现控制台输入。
* BufferedReader br = null;

br = new BufferedReader( new InputStreamReader( System.in ) );

System.out.print("请输入数据[exit退出]>>>> ");

try {
String str = br.readLine();

while( !str.equalsIgnoreCase("exit") ){…}
*
*

* 1、java语言中的打印流有两个:
*
* 1) PrintStream 字节的打印流。
*
* 2) PrintWriter 字符的打印流。
*
* 2、PrintStream 和 PrintWriter 打印流提供的常用方法如下:
* print() 和 println() 两个方法且它们是重载的,可实现
* 各种数据的打印输出。
*
* 3、打印流均属于输出流,且它们具有自动调用 flush()方法的功能(PrintWriter不行,有时需要调用flush()才可正常打印)。
* PrintStream 字节打印流还具有自动将字符转换为字节流的功能。
*
* 4、例: 将[0, 60000]编码范围的字符以打印流的方式存盘到指定的文件中。
*
//1 准备存盘的文件
String path = "f:\\chars.txt";
//2 声明
PrintStream  ps = null;
//3 创建
ps = new PrintStream( path );
PrintStream old = System.out; //记住系统默认的Out

System.setOut( ps ); //改变了系统默认的Out
//4 存盘
for(char ch = 0;  ch <= 60000;  ch++){
// ps.print( ch );
// ps.print(" ");
System.setOut( old ); //还原系统默认的Out

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics