`
peihong-ph
  • 浏览: 22663 次
  • 性别: 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

分享到:
评论

相关推荐

    java各种流继承

    java 中各种流的继承关系,图片介绍的再一目了然不过了

    java实现工作流

    在实际应用中,Java工作流解决方案可以广泛应用于各种业务场景,如审批流程、订单处理、客户服务等。通过Java工作流,企业可以优化业务流程,减少人为错误,提高工作效率,同时增强业务流程的透明度和可追溯性。 ...

    java 输入输出流

    5. **对象序列化流**:Java的`ObjectInputStream`和`ObjectOutputStream`允许将Java对象写入到流中并从流中读取,实现对象的序列化和反序列化。 6. **File类**:`java.io.File`是Java I/O中的一个重要类,它提供了...

    java中的各种输入流与输出流

    Java中的输入流与输出流是Java I/O体系的重要组成部分,它们是Java程序进行数据传输的基础。在Java中,I/O操作被设计为流(Stream)的形式,流是数据的有序序列,可以是从内存到磁盘、从一个文件到另一个文件、甚至从...

    Java8并行流中自定义线程池操作示例

    Java8并行流中自定义线程池操作示例 Java8并行流中自定义线程池操作示例主要介绍了Java8并行流中自定义线程池操作,结合实例形式分析了并行流的相关概念、定义及自定义线程池的相关操作技巧。 1. 概览 Java8引入了...

    javaIO(java中的流的介绍)

    - SequenceOutputStream:组合多个输出流,写入时会按顺序写入到每个流中。 1. Unicode编码 Java IO支持多种字符编码,包括Unicode。字符流(Character Stream)处理的是Unicode字符,而不是原始字节。 - Reader...

    文件和流 文件和流 java文件和流

    java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流

    IO流 javaio java 流

    - SequenceInputStream:允许从多个输入流中连续读取数据。 7. NIO(New IO): - 自Java 1.4引入,NIO提供了非阻塞I/O操作,增加了Channel、Selector和Buffer等新概念,提高了效率和并发性。 8. 考虑到效率,...

    Java-Io流,练习

    `ObjectOutputStream`用于写入对象到流中,`ObjectInputStream`则用于从流中读取对象。 七、文件操作练习 在你给出的"demo17"和"task09"这两个文件中,很可能是包含了针对文件读写的实例代码。例如,可能涉及使用`...

    java 视频流读写

    Java 视频流读写是Java编程中涉及多媒体处理的一部分,主要目的是为了在应用程序中处理、播放或存储视频数据。Java Media Framework (JMF) 是Java平台上的一个关键组件,用于处理音频、视频和流媒体内容。在这个"JMF...

    Java字符流与字节流区别

    Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流...

    基于Java的视频流处理(原创)

    通过预先训练好的级联分类器,可以在实时视频流中快速定位并识别出人脸。 人脸遮挡部分可能是为了保护个人隐私或者进行艺术效果的处理。在JavaCV或OpenCV中,可以使用掩模或者像素操作来实现这一功能。一旦检测到...

    Java中文件IO流.pdf

    Java 中文件 IO 流 Java 中文件 IO 流是指 Java 语言中对文件的输入输出操作,通过定义文件流来实现文件的读写操作。文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream ...

    java中的io流详解

    程序可以通过输入流从数据文件读取数据,但不可向输入流中写入数据;反之,程序可以通过输出流向数据文件中写入数据。 Java 中的 IO 流类的组织模式可以分为低层次和高层次两种界面。低层次界面主要是由包 java.io ...

    实验9 Java输入输出流.doc

    I/O流在Java中被设计为一系列的类和接口,它们构成了一个层次结构,使得程序员可以方便地处理各种类型的输入输出操作。Java的I/O系统主要分为两大类:字节流(Byte Stream)和字符流(Character Stream)。字节流...

    java实现流媒体播放

    最后,Java流媒体播放程序应具备良好的错误处理机制,如网络中断后的恢复、媒体文件格式不支持时的提示等。同时,考虑到不同的操作系统和硬件环境,程序还需要考虑跨平台的兼容性。 总的来说,Java 实现流媒体播放...

    Java工作流源码

    1. Activiti:Activiti 是一个开源的工作流引擎,基于 BPMN 2.0 标准,提供了强大的图形化建模工具和丰富的API,便于开发人员集成到各种应用程序中。 2. jBPM:jBPM 是一个全面的业务流程管理系统,不仅包含工作流...

    java socket 视频流转发socket

    在"Java Socket 视频流转发Socket"这个主题中,我们将深入探讨如何使用Java Socket来处理视频流的传输。 首先,让我们了解什么是ServerSocket。在Java中,`java.net.ServerSocket`类是服务器端使用的,它监听特定...

    【Sansui】java各种流整理demo

    java各类IO流的整理demo,其内包含InputStream/OutputStream BufferedReader流 FileOutputStream/FileInputStream流 PrintWriter流 DataOut/DataIn流 Object流 FileChannel类;

    Java流(文件读写操作)

    ### Java流(文件读写操作) #### 一、流的分类 Java中处理文件和数据时,使用流的概念来进行操作。根据不同的标准,流可以分为几种类型。 ##### 1. 按数据流动方向 - **输入流**:主要用于从数据源读取数据。输入...

Global site tag (gtag.js) - Google Analytics