字节输入、输出流"/>
File类字节输入、输出流
目录
1、字节输出流:FileOutputStream
2、 字节输入流:FileIntputStream
运行结果:
3、字节输出流与字节输入流联合使用:
结果:
4、 缓存流:
小结:
5、对象流:
1.创建一个对象
2.创建一个FileOutputStream对象:
3、序列化结果为:
4、实现反序列化
1、字节输出流:FileOutputStream
@Testpublic void test() throws Exception {FileOutputStream fileOutputStream = new FileOutputStream("F:\\111\\1.txt");String str="lwh";byte[] bytes = str.getBytes();fileOutputStream.write(bytes);fileOutputStream.close();}
运行结果:
2、 字节输入流:FileIntputStream
@Testpublic void test2() throws Exception{FileInputStream os = new FileInputStream("F:\\111\\1.txt");byte[] bytes = new byte[3];int c=0;while ((c=os.read(bytes))!=-1){String str = new String(bytes,0,c);System.out.println(str);}
运行结果:
3、字节输出流与字节输入流联合使用:
package demo420.demo02;import org.junit.Test;import java.io.*;/*** @创建人 xiaoliu* @创建时间 2022/4/20* @描述*/
public class Demo01 {@Testpublic void test() throws IOException {FileInputStream fos = new FileInputStream("C:\\Users\\Administrator\\Desktop\\1.jpg");FileOutputStream os = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\2.jpg");byte[] bytes = new byte[5];int len;while ((len=fos.read(bytes))!=-1) {os.write(bytes,0,len);}fos.close();os.close();}
}
结果:
4、 缓存流:
BufferedInputStream 和BufferedOutputStream 这两个类分别是 InputStream和OutputStream 的子类,作为装饰器子类,使用它们可以防止每次读取/发送数据时进行实际的写操作,代表着使用缓冲区。
package demo420.demo04;import org.junit.Test;import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;/*** @创建人 xiaoliu* @创建时间 2022/4/21* @描述*/
public class DemoBuffer {@Testpublic void test() throws Exception{FileInputStream is = new FileInputStream("C:\\Users\\Administrator\\Desktop\\111\\6.txt");FileOutputStream fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\111\\7.txt");BufferedOutputStream bos = new BufferedOutputStream(fos);int c=0;byte[] bytes = new byte[10];while ((c=is.read(bytes))!=-1){String str = new String(bytes,0,c);bos.write(str.getBytes());// byte[] bytes = str.getBytes();转成字节数组}}
}
加上 bos.flush 或 is.close 之后,数据才会被加载到文件中
bos.flush(); is.close();
小结:
只有流刷新操作或流关闭操作之后,数据才会被加载
5、对象流:
java.io.ObjectOutputStream和java.io.ObjectInputStream这两个类可以方便的实现对象的序列化(Serialize)和反序列化(Deserialize)。
1.创建一个对象
package demo420.demo03;import java.io.Serializable;/*** @创建人 xiaoliu* @创建时间 2022/4/20* @描述*/
public class Hero implements Serializable {private String name;private int age;private String level;public Hero(String name, int age, String level) {this.name = name;this.age = age;this.level = level;}@Overridepublic String toString() {return "Hero{" +"name='" + name + '\'' +", age=" + age +", level='" + level + '\'' +'}';}
}
2.创建一个FileOutputStream对象:
FileOutputStream is = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\demo.txt");ObjectOutputStream os = new ObjectOutputStream(is);Hero lwh = new Hero("lwh", 2, "3");os.writeObject(lwh);os.close();
3、序列化结果为:
4、实现反序列化
类要实现Serializable 接口
FileInputStream is = new FileInputStream("C:\\Users\\Administrator\\Desktop\\demo.txt");ObjectInputStream objectInputStream = new ObjectInputStream(is);Object o = objectInputStream.readObject();System.out.println(o);is.close();
结果:
更多推荐
File类字节输入、输出流
发布评论