IO流

字节流(InputStream(所有字节输入流的祖先类)/OutputStream(所有字节输出流的祖先类)):两个子类FileOutputStream/FileInputStream;都是对文件进行读取和写入操作。字节流都是一个字节一个字节的读取和写入

字节流读取

FileInputStream  in= new FileInputStream("text.txt");

Int b =0;

While(true){

b = in.read();

System.out.println(b);

In.close();//用完必须关闭流

/*也可以这样用字符串输出

byte[] b = new byte[1024];

while ((len = in.read(b)) != -1) {

String string = new String(b, 0, len);

System.out.println(string);

}

    */

字节流输出

 FileOutputStream out = new FileOutputStream("text.txt");

byte[] b = { 97, 98, 99 }; //可以输出数组,也可以直接输出数字

fileOutputStream.write(b);

 

  Out.Close();

也有 write(b,off,length);  输出索引的内容

 

文件的拷贝

    创建字节输入流输出流,

  Int len;//定义一个int类型的变量,记住每次读取的一个字节

While((len =in.read()!=-1) //如果等于-1说明读完了

 Out.write(len);

 

 

Byte [] b =new byte[1024];

这是一个缓存区,可以更快速的写入读取

 

用图来表示

 

 

字符流(Reader/Writer)由于它们是抽象类,我们学习它们的子类(FileReader/FileWriter)

字符流操作文件:

    FileReader fileReader = new FileReader("test.txt");

FileWriter fileWriter = new FileWriter("test1.txt");

// 创建char作为缓冲

char[] ch = new char[1024];

int len = 0;

while ((len = fileReader.read(ch)) != -1) {

fileWriter.write(ch, 0, len);

 

缓冲流的概念:就是为了提高文件读取的效率。

字节缓冲流:继承于FilterInputStream/FilterOutputStream类

 1:构造方法:public BufferedInputStream(InputStream in)

创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。创建一个内部缓冲区数组并将其存储在 buf 中。

2:BufferedOutputStream(OutputStream out)

3:注意:字节缓冲流只能包装字节流。

字符缓冲流

1:构造方法:public BufferedWriter(Writer out)

创建一个使用默认大小输出缓冲区的缓冲字符输出流。

2:public BufferedReader(Reader in)

创建一个使用默认大小输入缓冲区的缓冲字符输入流。

        读取的时候 BufferedReader中有一个重要的方法readline(),该方法用于一次读取一行文本

3:注意:字符缓冲流只能包装字符流

 

不同流之间不能相互包装

 

数据流(DataInputStream /DataOutStream)

有的时候,并不需要存储整个对象的信息,而只需要储存对象的成员数据,这些成员数据的类型又都是基本数据类型,这时就需要使用 数据流DataInputStream DataOutStream

     数据流操作文件

      int a = 100000;

DataOutputStream dataOutputStream = new DataOutputStream(

new FileOutputStream("test.txt"));

dataOutputStream.writeInt(a);

dataOutputStream.writeBoolean(true);

dataOutputStream.close();

DataInputStream dataInputStream = new DataInputStream(

new FileInputStream("test.txt"));

System.out.println(dataInputStream.readInt());

System.out.println(dataInputStream.readBoolean());

     

  

对象流

   如果希望永久保存这些对象,则可以将对象转为字节数据写入到硬盘上,这个过程称为对象序列化。 为此JDK提供了ObjectOutputStream/ObjectInputStream 来实现对象的序列化。

   当对象进行序列化时,必须保证该对象实现Serializable接口,否则程序会出现NotSerializableException异常

 

   对象流操作

     ObjectOutputStream obj =new ObjectOutputStream(new FileOutputStream("text.txt"));

 

obj.writeObject(Command.list);

obj.close();

 

 ObjectInputStream obj2 = new ObjectInputStream(new FileInputStream("text.txt"));

 

   Command.list = (ArrayList<Shape>)obj2.readObject();

public class Command {

 

public static ArrayList<Shape> list=new ArrayList<Shape>();

 

}

 

public abstract class Shape implements Serializable

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值