篇一 :Java中的IO流知识总结

Java中的IO流知识总结(转) 收藏

总结一:

Java IO的一般使用原则:

一、按数据来源(去向)分类:

1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter

2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream

3、是Char[]: CharArrayReader, CharArrayWriter

4、是String: StringBufferInputStream, StringReader, StringWriter

5、网络数据流:InputStream, OutputStream, Reader, Writer

二、按是否格式化输出分:

1、要格式化输出:PrintStream, PrintWriter

三、按是否要缓冲分:

1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter

四、按数据格式分:

1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有带Stream结束的子类

2、纯文本格式(含纯英文与汉字或其他编码方式);Reader, Writer及其所有带Reader, Writer的子类

五、按输入输出分:

1、输入:Reader, InputStream类型的子类

2、输出:Writer, OutputStream类型的子类

六、特殊需要:

1、从Stream到Reader,Writer的转换类:InputStreamReader,

OutputStreamWriter

2、对象输入输出:ObjectInputStream, ObjectOutputStream

…… …… 余下全文

篇二 :Java IO流的基本知识总结。。。。。

Java IO流的基本知识

l  对一下几个类的理解:

n  类File

n  类FileInputStream:         

n  类 FireOutputStream :

n  BufferedReader:

从字符输入流中读取文本,缓冲各个字符,从而实现字符,数组和行的高效读取。通常采用此操作时常常将BufferedReader包装其所有read()操作以提高开销很高的Reader(如FileReader ,Inputstream Reader)。

具体实现:

BufferdReader br = new BufferdReader (new  FileReader(“Sharon.text”)); “Sharon.text”为文件名

n  BufferedWriter:

将文本将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

可以指定缓冲区的大小,或者接受默认的大小。在大多数情况下,默认值就足够大了。该类提供了 newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。因此调用此方法来终止每个输出行要优于直接写入新行符。

通常 Writer 将其输出立即发送到底层字符或字节流。除非要求提示输出,否则建议用 BufferedWriter 包装所有其 write() 操作可能开销很高的 Writer(如 FileWriters 和 OutputStreamWriters)。例如,

PrintWriter out

   = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));

…… …… 余下全文

篇三 :java io流的认识

大多初学者对java I/O系统提供了如此多的类而感到不知所错,本文中将会做一下梳理 流的概念

流(stream)的概念源于UNIX中的管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。

一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。

流的方向是重要的,根据流的方向,流可以分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往往输入流写,而不能读取。其实输入/输出是想对于内存来说的。

实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对于输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。

java.io包中的类对应两类流,一类流直接从指定的位置(如磁盘文件或内存区域)读或写,这类流称为结点流,其他的流则称为过滤流(包装流)

过滤流:一些流可以从文件以及其他地方接收字节,另一些流可以将字节组合成更有用的数据类型。将一个已经存在的流传递给另一个流的构造方法,将这两种流结合起来,结合后的流被称为过滤流。

过滤器输入流往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,过滤器输出流也类似。

java的常用输入、输出流

其实都是继承自4个抽象类,分别是

基于单字节的InputStream,OutputStream类

基于双字节的Unicode代码单元的 Reader, Writer类

一旦打开输入流后,程序就可从输入流串行地读数据。

从输入流读数据的过程一般如下:

open a stream

while more information

read information

close the stream

…… …… 余下全文

篇四 :java基础知识总结(经典中的经典)

Java基础知识总结

写代码:

1,明确需求。我要做什么?

2,分析思路。我要怎么做?1,2,3。

3,确定步骤。每一个思路部分用到哪些语句,方法,和对象。

4,代码实现。用具体的java语言代码把思路体现出来。

学习新技术的四点:

1,该技术是什么?

2,该技术有什么特点(使用注意):

3,该技术怎么使用。demo

4,该技术什么时候用?test。

-----------------------------------------------------------------------------------------------

一:java概述:

1991 年Sun公司的James Gosling(詹姆斯·高斯林)等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒、PDA等的微处理器;

1994年将Oak语言更名为Java;

Java的三种技术架构:

JAVAEEJava Platform Enterprise Edition,开发企业环境下的应用程序,主要针对web程序开发;

JAVASEJava Platform Standard Edition,完成桌面应用程序的开发,是其它两者的基础;

JAVAMEJava Platform Micro Edition,开发电子消费产品和嵌入式设备,如手机中的程序;

1,JDK:Java Development Kit,java的开发和运行环境,java的开发工具和jre。

2,JRE:Java Runtime Environment,java程序的运行环境,java运行的所需的类库+JVM(java虚拟机)。

3,配置环境变量:让java jdk\bin目录下的工具,可以在任意目录下运行,原因是,将该工具所在目录告诉了系统,当使用该工具时,由系统帮我们去找指定的目录。

…… …… 余下全文

篇五 :java.io包中的流

Java.io包中的流:

 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样,如下图:



java.io包是一组流类,分为:
字节流:抽象父类是InputStreamOutputStream
字符流:抽象父类是Reader和Writer
[注]:I/O中的(input/output)stream无非就是包括基于字符的stream、基于字节的stream和把基于字节的stream转换成基于字符的stream的stream。

1、 InputStream
InputStream类的体系结构
InputStream类的体系结构
 

1.1、PipedInputStream:实现了pipe的概念,主要在线程中使用。管道输入流是指一个通讯管道的两个接收端。一个线程通过管道输出流发送数据,而另一个线程通过管道输入流读取数据,这样可实现两个线程间的通讯。
其构造函数有:
-PipedInputStream() 创建一个管道输入流,它还未与一个管道输出流连接。
-PipedInputStream(PipedOutputStream) 创建一个管道输入流, 它已连接到一个管道输出流。

1.2、FileInputStream 类:从实际磁盘文件读取数据,把一个文件作为InputStream,实现对文件的读取操作。
其构造函数有:
-FileInputStream(File) 创建一个输入文件流,从指定的 File 对象读取数据。
-FileInputStream(FileDescriptor) 创建一个输入文件流,从指定的文件描述器读取数据。
-FileInputStream(String) 创建一个输入文件流,从指定名称的文件读取数据。
它所用的方法有
- read() 从当前输入流中读取一字节数据。
-read(byte[]) 将当前输入流中 b.length 个字节数据读到一个字节数组中。
-read(byte[], int, int) 将输入流中 len 个字节数据读入一个字节数组中。

1.3、ByteArrayInputStream 类:在字节数组中执行读写操作,也就是把内存中的一个缓冲区作为InputStream使用。
它的构造函数有:
-ByteArrayInputStream(byte[])创建一个新字节数组输入流,它从指定字节数组中读取数据。
-ByteArrayInputStream(byte[], int, int) 创建一个新字节数组输入流,它从指定字节数组中读取数据。
mark::该字节数组未被复制。

1.4、SequenceInputStream:把多个InputStream合并为一个InputStream。“序列输入流”类允许应用程序把几个输入流连续地合并起来,并且使它们像单个输入流一样出现。每个输入流依次被读取,直到到达该流的末尾。然后“序列输入流”类关闭这个流并自动地切换到下一个输入流。
构造函数有:
-SequenceInputStream(Enumeration) 创建一个新的序列输入流,并用指定的输入流的枚举值初始化它。
-SequenceInputStream(InputStream, InputStream) 创建一个新的序列输入流,初始化为首先 读输入流 s1, 然后读输入流 s2。


1.5、StringBufferInputStream 类:类似于ByteArrayInputStream,将字符串用作内部缓冲器,或者说是把一个String对象作为InputStream。
[注释]不推荐使用 StringBufferInputStream 方法。 此类不能将字符正确的转换为字节。
同 JDK 1.1 版中的类似,从一个串创建一个流的最佳方法是采用 StringReader 类。
其构造函数有:
-StringBufferInputStream(String) 据指定串创建一个读取数据的输入流串。

2、OutputStream
定义用于写入字节或字节数组的方法。
OutputStream类的体系结构

2.1、FileOutputStream类:将数据以字节流写入文件。(如果文件不存在则创建文件后写入)。这里的文件是指向File或FileDescriptor。
其构造函数有:
-FileOutputStream(File) 创建一个文件输出流,向指定的 File 对象输出数据。
-FileOutputStream(FileDescriptor) 创建一个文件输出流,向指定的文件描述器输出数据。
-FileOutputStream(String) 创建一个文件输出流,向指定名称的文件输出数据。
-FileOutputStream(String, boolean) 用指定系统的文件名,创建一个输出文件。

2.2、PipedOutputStream:管道输出流是指一个通讯管道的发送端。一个线程通过管道输出流发送数据,而另一个线程通过管道输入流读取数据,这样可实现两个线程间的通讯。
其构造函数有:
-PipedOutputStream() 创建一个管道输出流,它还未与一个管道输入流连接。
-PipedOutputStream(PipedInputStream) 创建一个管道输出流,它已连接到一个管道输入流。

2.3、ByteArrayOutputStream类:在内存中创建缓冲区,并把信息存入内存中的一个缓冲区中。该类实现一个以字节数组形式写入数据的输出流。当数据写入缓冲区时,它自动扩大。toByteArray( )和toString( )方法用于数据检索。
其构造函数有:
-ByteArrayOutputStream() 创建一个新的字节数组输出流。
-ByteArrayOutputStream(int) 创建一个新的字节数组输出流,并带有指定大小字节的缓冲区容量。
常用方法有:
-toString(String) 根据指定字符编码将缓冲区内容转换为字符串,并将字节转换为字符。
-write(byte[], int, int) 将指定字节数组中从偏移量 off 开始的 len 个字节写入该字节数组输出流。
-write(int) 将指定字节写入该字节数组输出流。
-writeTo(OutputStream) 用 out.write(buf, 0, count) 调用输出流的写方法将该字节数组输出流的全部内容写入指定的输出流参数。

2.4、FilterOutputStream类:高层输出流

File 类:提供定位本地文件系统、描述文件和目录的功能,是 java.io 包中引用实际磁盘文件的唯一对象。

流类可以分为:
底层流:包含以字节的形式读写的方法
高层过滤器流:用于读写高层信息;
高层流要求底层流作为基础。

FilterInputStream 类的子类包括:
*DataInputStream类:提供读取任意对象的能力
*DataOutputStream类:提供写入任意对象的能力
*BufferedInputStream类:允许程序一次一个字节地从流读取数据
*BufferedOutputStream类:允许程序一次一个字节地向流写入数据
*PrintStream类:用于写入文本或基本类型

3、Reader
读取字符类型。
Reader类的体系结构


BufferedReader:是Reader类的子类,接受Reader 对象为参数,为Reader对象添加字符缓冲器,为数据输入分配内存存储空间,存取数据更为有效。
CharArrayReader:允许将字符数组用作输入
其构造函数有:
-CharArrayReader:与ByteArrayInputStream对应
-CharArrayReader(char[]) 用指定字符数组创建一个 CharArrayReader。
-CharArrayReader(char[],int,int) 用指定字符数组创建一个CharArrayReader。
InputStreamReader:从输入流读取字节,并将它们转换成字符
FileReader:使读取字符文件成为可能,与FileInputStream对应。
FilterReader:允许读取过滤字符流。
PipedReader:与PipedInputStream对应
StringReader:读取字符串的字符,与StringBufferInputStream对应。


4、Writer
写入字符类型。
Writer类的体系结构

BufferedWriter:将数据缓冲到字符输出流
CharArrayWriter:允许将字符缓冲器用作输出流,与ByteArrayOutputStream对应
FileWriter:允许将字符类型数据写入文件,与FileOutputStream对应。
PrintWriter:包含一些使生成格式化输出变得很简单的方法。
StringWrite:无与之对应的以字节为导向的stream。
FilterWriter:用于写入过滤字符流
PipedWrite:与PipedOutputStream对应


两种不同导向的stream之间的转换
InputStreamReader和OutputStreamReader:把一个基于字节的stream转换成一个基于字符的stream。InputStreamReader 类是从字节流到字符流的桥梁:它读入字节,并根据指定的编码方式,将之转换为字符流。使用的编码方式可能由名称指定,或平台可接受的缺省编码方式。
InputStreamReader(InputStream) 用缺省的字符编码方式,创建一个InputStreamReader。
InputStreamReader(InputStream, String) 用已命名的字符编码方式,创建一个 InputStreamReader。
InputStreamReader 的 read()有多个重载方法,用于从基本字节输入流中读取一个或多个字节。
为了达到更高效率,考虑用 BufferedReader 封装 InputStreamReader,
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

OutputStreamWriter 将多个字符写入到一个输出流,根据指定的字符编码将多个字符转换为字节。
   每个 OutputStreamWriter 合并它自己的 CharToByteConverter, 因而是从字符流到字节流的桥梁。

Java I/O的一般使用原则:
一、按数据来源(去向)分类:
1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter
2、是byte[]:ByteArrayInputStream, ByteArrayOutputStream
3、是Char[]: CharArrayReader, CharArrayWriter
4、是String: StringBufferInputStream, StringReader, StringWriter
5、网络数据流:InputStream, OutputStream, Reader, Writer
二、按是否格式化输出分:
1、要格式化输出:PrintStream, PrintWriter
三、按是否要缓冲分:
1、要缓冲:BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter
四、按数据格式分:
1、二进制格式(只要不能确定是纯文本的): InputStream, OutputStream及其所有子类
2、纯文本格式(含纯英文与汉字或其他编码方式):Reader, Writer及其所有带Reader, Writer的子类
五、按输入输出分:
1、输入:Reader, InputStream类型的子类
2、输出:Writer, OutputStream类型的子类
六、特殊需要:
1、从Stream到Reader,Writer的转换类:InputStreamReader, OutputStreamWriter
2、对象输入输出:ObjectInputStream, ObjectOutputStream
3、进程间通信:PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
4、合并输入:SequenceInputStream
5、更特殊的需要:PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader
决定使用哪个类以及它的构造进程的一般准则如下(不考虑特殊需要):
首先,考虑最原始的数据格式是什么: 原则四
第二,是输入还是输出:原则五
第三,是否需要转换流:原则六第1点
第四,数据来源(去向)是什么:原则一
第五,是否要缓冲:原则三 (特别注明:一定要注意的是readLine()是否有定义,有什么比read, write更特殊的输入或输出方法)
第六,是否要格式化输出:原则二

…… …… 余下全文

篇六 :Java IO流学习总结

Java流操作有关的类或接口:

Java流类图结构:

流的概念和作用

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 

IO流的分类

  • 根据处理数据类型的不同分为:字符流和字节流
  • 根据数据流向不同分为:输入流和输出流

字符流和字节流

字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:

  • 读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
  • 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。

结论:只要是处理纯文本数据,就优先考虑使用字符流。 除此之外都使用字节流。

输入流和输出流

对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流。  

Java IO流对象

1.输入字节流InputStreamIO 中输入字节流的继承图可见上图,可以看出:

  1. InputStream 是所有的输入字节流的父类,它是一个抽象类。
  2. ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。PipedInputStream 是从与其它线程共用的管道中读取数据,与Piped 相关的知识后续单独介绍。
  3. ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。

2.输出字节流OutputStream

…… …… 余下全文

篇七 :JAVA_IO流总结

JAVA IO流总结

一、IO流的三种分类方式

1.按流的方向分为:输入流和输出流

2.按流的数据单位不同分为:字节流和字符流

3.按流的功能不同分为:节点流和处理流

二、IO流的四大抽象类:

字符流:Reader Writer

字节流:InputStream(读数据)

OutputStream(写数据)

三、InputStream的基本方法

int read() throws IOException 读取一个字节以整数形式返回,如果返回-1已到输入流的末尾

void close() throws IOException 关闭流释放内存资源

long skip(long n) throws IOException 跳过n个字节不读

四、OutputStream的基本方法

void write(int b) throws IOException 向输出流写入一个字节数据

void flush() throws IOException 将输出流中缓冲的数据全部写出到目的地

五、Writer的基本方法

void write(int c) throws IOException 向输出流写入一个字符数据

void write(String str) throws IOException将一个字符串中的字符写入到输出流 void write(String str,int offset,int length)

将一个字符串从offset开始的length个字符写入到输出流

void flush() throws IOException

将输出流中缓冲的数据全部写出到目的地

六、Reader的基本方法

int read() throws IOException 读取一个字符以整数形式返回,如果返回-1已到输入流的末尾

七、节点流类型

八、访问文件之FileInputStream和FileOutputStream继承基类用于向文件中输入输出字节

…… …… 余下全文

篇八 :IO流(JAVA)总结

IO流(JAVA)总结

一:整体说明

用的是装饰模式,装饰模式有四个角色,分别是通用接口、本原、抽象装饰、具体装饰,因为是将本原聚合到了装饰中,所以可以将本原或装饰通过构造子注入到另一个装饰,多个装饰可以随意的组合,形成一个综合的功能对象。

io流分为输入流及输出流,输入流是文件到内存,输出流是内存到文件。

流分为低层流及高层流,在实例化高层流时必须通过构造子将低层流注入到高层流中。输入流通用的方法是read(),read(char[]),read(byte[]),readline。

输出流的通用方法是write(int),write(byte[]),write[char[]],print("string")。

当读取一个文件时,对于以字节/字节数组,字符/字符数组读取的结束条件是!=-1,对于以字符串读取的结束条件是!=null。

对于有缓存的输出时,要想写入到文件必须flush或close。

二:体系结构及实现代码

1.输入字节流的体系结构: InputStream FileInputStream FilterInputStream ObjectInputStream DataInputStream 实现代码: --读一个字节 int temp=fis.read(); while(temp!=-1) { System.out.print(temp); temp=fis.read(); BufferedInputStream } --读一批字节 byte[] bytes=new byte[1000]; int result=fis.read(bytes); while(result!=-1) { } String temp=new String(bytes,0,result); result=fis.read(bytes); 2.输出的字节流的体系结构: OutputStream FileOutputStream FilterOutputStreame ObjectOutputStream PrintStream 实现代码: int temp; fis.write(temp); byte temps[]=new byte[1000]; fos.write(temps); BufferedOutputStream DataOutputStream

…… …… 余下全文