黑马程序员—java输入输出流

时间:2021-09-01 13:18:35
------- android培训 java培训 、期待与您交流! ----------

 在学系习I/o流之前,先了解了它的概念。java中没有标准的输入输出流语句,在java中将信息的输入与输出过程抽象为输入输出流。输入是指数据流入程序,输出是指数据从

程序流出。

    输入输出流按流的方向划分为输入流和输出流;按流的分工划分为节点流和处理流;按流的内容划分为面向字节的流和面向字符的流;

    下面来介绍各种流的继承关系及用法:

outinputstream,InputStream,Reader ,Writer的父类是所有类的父类的Object,而outinputstream,InputStream是面向字节的流,Reader ,Writer是面向字符的。Reader的子类有BufferedReader(其子类有LineNumberReader),InputStreamReader(转换流,其子类有FileReader),FilterReader(其子类有PushbackReader),CharArrayReader,PipedReader,StringReader,Writer的子类有BufferedWriter,CharArrayWriter,OutputStreamWriter(其子类有Filewriter)FilterWriter,PipedWriter,StringWriter;

InputStream的子类有AudioInputStream,ByteArrayInputStream,FileInputStream,FilterInputStream,InputStream

ObjectInputStream,PipedInputStream,SequenceInputStream,StringBufferInputStream

其中FilterInputStream的子类有BufferedInputStream,CheckedInputStream,CipherInputStream,DataInputStream,DeflaterInputStream,DigestInputStream,InflaterInputStream,LineNumberInputStream,ProgressMonitorInputStream,PushbackInputStream

OutputStream的子类有ByteArrayOutputStream,FileOutputStream,FilterOutputStream,ObjectOutputStream,OutputStream,PipedOutputStream

FilterOutputStream的子类BufferedOutputStream,CheckedOutputStream,CipherOutputStream,DataOutputStream,DeflaterOutputStream,DigestOutputStream,InflaterOutputStream,PrintStream

标准输入输出流:System.out,System.in,System.err。可通过SetIn(InputStream)指定新的标准的输入流

SetOut(OutStream)指定新的输出流。

下面介绍个File类:

File类是IO包中唯一代表磁盘文件本身的对象,File类定义了一些与平台无关的方法来操纵文件,通过调用File类提供的各种方法,能够完成创建、删除文件,重命名文件,判断文件的读写权限及文件是否存在,设置和查询文件的最近修改时间等操作   File的方法有canExecute(),isDirectory(),length(),isFile(),exists() ,createNewFile() ,delete(),getAbsoluteFile(),listFiles()等方法 RandomAccessFile类是Java语言中功能最为丰富的文件访问类,它提供了众多的文件访问方法,RandomAccessFile能以只读或读写方式打开文件,使用哪种方式取决于用户创建RandomAccessFile类对象的构造方法   new RandomAccessFile(f,"rw"); // 读写方式   new RandomAccessFile(f,"r"); // 只读方式Java 的流式输入/输出建立在四个抽象类的基础上:InputStream, OutputStream, Reader和Writer,操作文件流时,不管是字节流还是字符流都可以按照以下的方式进行。    ⑴ 使用File类找到一个文件    ⑵ 通过File类的对象去实例化字节流或字符流的子类    ⑶ 进行字节(字符)的读、写操作    ⑷ 关闭文件流管道流主要作用是可以连接两个线程间的通信。管道流也分为字节流(PipedInputStreamPipedOutputStream)与字符流PipedReaderPipedWriter)两种类型ByteArrayInputStream是输入流的一种实现,它有两个构造方法,每个构造方法都需要一个字节数组来作为其数据源      ByteArrayInputStream(byte[] buf)     ByteArrayInputStream(byte[] buf,int offse , int length)     ByteArrayOutputStream()     BuyteArrayoutputStream(int) PrintStream类提供了一系列的printprintln方法,PrintStream有下面几个构造方法:       PrintStream(OutputStream out)             PrintStream(OutputStream out,boolean auotflush)       PrintStream(OutputStream out,boolean auotflush,       String encoding)DataInputStreamDataOutputStream提供了与平台无关的数据操作采用SequenceInputStream类,可以实现两个文件的合并操作Java支持字节流和字符流,但有时需要字节流和字符流之间的转换,InputStreamReaderOutputStreamWriter,这两个类是字节流和字符流之间相互转换的类,InputStreamReader可以将一个字节流中的字节解码成字符,OuputStreamWriter将写入的字符编码成字节后写入一个字节对象序列化:对象序列化,是指将对象转换成二进制数据流的一种实现手段,通过将对象序列化,可以方便的实现对象的传输及保存。通过继承Serializable来实现继承类字符编码:计算机里只有数字,字符与数字对应的编码固定下来后,这套编码规则被称为ASCII码       许多国家都把本地的字符集引入了计算机,扩展了计算机中字符的范围,*为每一个中文字符都指定了一个对应的数字,这套编码规则称为GBK      为了解决各个国家和地区使用自不同的本地化字符编码带来的不便,人们将全世界所有的符号进行了统一编码,称之为Unicode编码   
 
 
 
 
 

    

      

------- android培训 java培训 、期待与您交流! ----------