【九】Java IO流(下)

一,字节流

1、InputStream抽象类

InputStream 为字节输入流,它本身为一个抽象类。

Inputstream类中的常用方法:
  
  (1) public abstract int read( ):读取一个byte的数据,返回值是高位补0的int类型值。若返回值=-1说明没有读取到任何字节读取工作结束。
  
  (2) public int read(byte b[ ]):读取b.length个字节的数据放到b数组中。返回值是读取的字节数。该方法实际上是调用下一个方法实现的
  
  (3) public int read(byte b[ ], int off, int len):从输入流中最多读取len个字节的数据,存放到偏移量为off的b数组中。
  
  (4) public int available( ):返回输入流中可以读取的字节数。注意:若输入阻塞,当前线程将被挂起,如果InputStream对象调用这个方法的话,它只会返回0,这个方法必须由继承InputStream类的子类对象调用才有用,
  
  (5) public long skip(long n):忽略输入流中的n个字节,返回值是实际忽略的字节数, 跳过一些字节来读取
  
  (6) public int close( ) :我们在使用完后,必须对我们打开的流进行关闭.

主要的子类:

 1) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作     

 2) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用 

 3) StringBufferInputStream:把一个String对象作为InputStream 

 4) PipedInputStream:实现了pipe的概念,主要在线程中使用 

 5) SequenceInputStream:把多个InputStream合并为一个InputStream 

 6) FilterInputStream:也是抽象类

2、OutputStream抽象类

OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。

OutputStream提供了3个write方法来做数据的输出,这个是和InputStream是相对应的。
  
  (1) public void write(byte b[ ]):将参数b中的字节写到输出流。
  
  (2)public void write(byte b[ ], int off, int len) :将参数b的从偏移量off开始的len个字节写到输出流。
  
  (3) public abstract void write(int b) :先将int转换为byte类型,把低字节写入到输出流中。
  
  (4)public void flush( ) : 将数据缓冲区中数据全部输出,并清空缓冲区。
  
  (5) public void close( ) : 关闭输出流并释放与流相关的系统资源。

注:

流结束的判断:方法read()的返回值为-1时;readLine()的返回值为null时。

3、FileInputStream文件输入流

将a.txt的内容显示在显示器上

public class FileInputStreamDemo {

    public static void main(String[] args) throws IOException {

        FileInputStream fis = new FileInputStream("a.txt");
        int a;
        while ((a = fis.read()) != -1) {
            System.out.print((char)a);//强制转换为char
        }
        fis.close();
 }
}
4、FileOutputStream文件输出流

注:

(1)文件中写数据时,若文件已经存在,则覆盖存在的文件;

(2)读/写操作结束时,应调用close方法关闭流。

例子:

使用键盘输入一段内容,将内容保存在文件write.txt中

public class FileOutputStreamDemo {

    public static void main(String[] args) throws IOException {

        FileOutputStream fos = new FileOutputStream("write.txt");
        int a;
        while ((a = System.in.read()) != -1) {
            fos.write(a);
        }
        fos.close();
 }
}
5、缓冲输入输出流 BufferedInputStream/ BufferedOutputStream(也称包装流)

a、将文件读入内存:

将BufferedInputStream与FileInputStream相接

FileInputStream in=new FileInputStream( “file1.txt “);

BufferedInputStream bin=new BufferedInputStream(in);

b、将内存写入文件:

将BufferedOutputStream与 FileOutputStream相接

FileOutputStreamout=new FileOutputStream(“file2.txt”);

BufferedOutputStream bin=new BufferedInputStream(out);

c、键盘输入流读到内存
将BufferedReader与标准的数据流相接

InputStreamReader sin=new InputStreamReader (System.in) ;

BufferedReader bin=new BufferedReader(sin);

例子:从键盘输入一串内容存到file1.txt文件中

public class FileInputStreamDemo {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new FileWriter(new File("file1.txt")));
        String s;
        while ((s = br.readLine()).length() > 0) {
            bw.write(s, 0, s.length());
            bw.newLine();
 }
        
        bw.flush();//把缓冲区内容写到文件
br.close();
bw.close();

 }}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值