Java字节流操作文件演示

 

InputStream

常用方法

void

close()
关闭此输入流并释放与该流关联的所有系统资源。

abstract int

read()
从输入流中读取数据的下一个字节。

int

read(byte[] b)
从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。

int

read(byte[] b, int off, int len)
将输入流中最多 len 个数据字节读入 byte 数组。

int

available()
返回文件估计字节数。


OutputStream

常用方法

void

close()
关闭此输出流并释放与此流有关的所有系统资源。

void

flush()
刷新此输出流并强制写出所有缓冲的输出字节。

void

write(byte[] b)
b.length 个字节从指定的 byte 数组写入此输出流。

void

write(byte[] b, int off, int len)
将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。

abstract void

write(int b)
将指定的字节写入此输出流。

 

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByStreamDemo {

   public static void main(String[] args) throws IOException {
      demo_write();
      demo_read_2();
   }

   public static void demo_write() throws IOException {
      FileOutputStream fos = new FileOutputStream("C:\\1.txt");
      // 写数据,直接写入了目的地中
      fos.write("abcdef".getBytes());
      // fos.flush();//空方法
      fos.close();// 关闭资源动作要完成
   }

   public static void demo_read_1() throws IOException {
      FileInputStream fis = new FileInputStream("C:\\1.txt");
      int ch = 0;
      while ((ch = fis.read()) != -1) {
         System.out.println((char) ch);
      }
   }

   public static void demo_read_2() throws IOException {
      FileInputStream fis = new FileInputStream("C:\\1.txt");
      byte buf[] = new byte[1024];// 建议使用这种
      // byte buf[]=new byte[fis.available()];//此方法慎用,以免内存溢出
      int len = 0;
      while ((len = fis.read(buf)) != -1) {
         System.out.println(new String(buf, 0, len));
      }
   }
}