java学习笔记7 流

流类

Java 的流式输入/输出建立在四个抽象类的基础上:InputStream, OutputStream,Reader 和 Writer。它们用来创建具体流式子类。

InputStream 和 OutputStream 设计成字节流类。Reader 和 Writer 为字符流设计。字节流类和字符流类形成分离的层次结构。一般说来,处理字符或字符串时应使用字符流类,处理字节或二进制对象时应用字节流类。

一般在操作文件流时,不管是字节流还是字符流都可以按照以下的方式进行:

1 、  使用 File  类找到一个文件

2 、  通过 File  类的对象去实例化字节流或字符流的子类

3 、  进行字节(字符)的读、写操作

4 、  关闭文件流

InputStream 是一个定义了 Java 流式字节输入模式的抽象类。该类的所有方法在出错条件下都会引发一个 IOException 异常。

InputStream定义的方法


OutputStream(输出字节流)

OutputStream是定义了流式字节输出模式的抽象类。该类的所有方法返回一个void值并且在出错情况下引发一个IOException异常。

OutputStream定义的方法


注意:上两个表中的多数方法由InputStream 和 OutputStream的子类来实现,但

mark( )和 reset( )方法除外。

FileInputStream(文件输入流)

FileInputStream 类创建一个能从文件读取字节的InputStream 类, 它的两个常用的构造方法如下:

FileInputStream(String filepath)

FileInputStream(File fileObj)

这两个构造方法都能引发FileNotFoundException异常。这里,filepath 是文件的绝对路径,fileObj是描述该文件的File对象。

下面的例子创建了两个使用同样磁盘文件且各含一个上面所描述的构造方法的FileInputStreams类:

InputStream f0 = newFileInputStream("c:\\test.txt") ;

File f = newFile("c:\\test.txt");

InputStream f1 = new FileInputStream(f);

 

FileOutputStream(文件输出流)

FileOutputStream 创建了一个可以向文件写入字节的类 OutputStream,它常用的构造方法如下:FileOutputStream(StringfilePath)

FileOutputStream(File fileObj)

FileOutputStream(String filePath, boolean append)

它们可以引发IOException 或SecurityException 异常。这里 filePath 是文件的绝对路径,fileObj 是描述该文件的 File 对象。如果 append 为 true,文件则以设置搜索路径模式打开。FileOutputStream 的创建不依赖于文件是否存在。在创建对象时,FileOutputStream 会在打开输出文件之前就创建它。

 

代码示例:

import java.io.*;
public class StreamDemo {
       publicstatic void main(String[] args) {
              Filef = new File("e:\\temp.txt");
              FileOutputStreamout = null;
              try{
                      out = new FileOutputStream(f);
                  } catch (FileNotFoundException e) {
                     e.printStackTrace();
               }
              byteb[] = "Hello world".getBytes();
              try{
                      out.write(b);
                  } catch (IOException e1) {
                 e1.printStackTrace();
                   }
             
              try{
                      out.close();
                  } catch (IOException e2) {
                     e2.printStackTrace();
                 }
      
              InputStreamin = null;
              try{
                        in = new FileInputStream(f);
                  } catch (FileNotFoundException e3) {
                     e3.printStackTrace();
                 }
              byteb1[] = new byte[1024];
              inti = 0;
              try{
                     i=in.read(b1);
              }catch (IOException e4) {
                  e4.printStackTrace();
              }
              try{
                     in.close();
              }catch (IOException e5) {
                     e5.printStackTrace();
              }
              System.out.println(newString (b1,0,i));
       }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值