ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java学习_20220617

2022-06-17 16:35:37  阅读:161  来源: 互联网

标签:txt Java 读取 20220617 学习 Student new 序列化 字节


IO框架

1. 字节缓冲流

提高IO效率,减少访问磁盘的次数 

(1)BufferedInputStream 字节缓冲输入流

a. 创建BufferedInputStream(缓冲流的目的是为了增强字节流)

FileInputStream fileInputStream = new FileInputStream("e:\\aaa.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);

b. 读取

int data = 0;
while((data = bufferedInputStream.read())!=-1){
    System.out.print((char)data);
}

byte[] bytes = new byte[1024];
int count = 0;
while ((count=bufferedInputStream.read(bytes))!=-1){
    System.out.println(new String(bytes,0,count));
}

c. 关闭

bufferedInputStream.close();

(2)BufferedInputStream 字节缓冲输出流

a. 创建BufferedInputStream(缓冲流的目的是为了增强字节流)

FileOutputStream fileOutputStream = new FileOutputStream("e:\\buffer.txt");
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);

b. 读取

bufferedOutputStream.write("0123456".getBytes());
for (int i = 0; i < 10; i++) {
     bufferedOutputStream.write("helloworld".getBytes());
    bufferedOutputStream.flush();//刷新到内存
}

c. 关闭

bufferedOutputStream.close();

2. 对象流

增强了缓冲区功能,增强了读写8种基本数据类型和字符串功能,增强了读写对象的功能:readObject()读取一个对象,writeObject(Object object) 向流中写入一个对象。

使用流传输对象的过程称为:序列化(写入),反序列化(读取)。

(1)ObjectOutputStream 实现对象的序列化,要求:序列化类必须实现Serializable接口

A.创建对象流

FileOutputStream fileOutputStream = new FileOutputStream("e:\\Student.bin");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);

B. 序列化(写入操作)

public class Student implements Serializable { //实现Serializable接口,否则序列化不了
    private String name;
    private int age;  
    //若属性添加了transient(瞬间的)之后,这个属性就不能再序列化了
    //静态属性也不能序列化
Student student = new Student("张三",12); 
objectOutputStream.writeObject(student);
//序列化多个对象,可以借助集合实现
ArrayList<Student> list = new ArrayList<>();
list.add(student1);
list.add(student2);
objectOutputStream.writeObject(list);

 C. 关闭

objectOutputStream.close();

 (2)ObjectInputStream 实现对象的反序列化(读取重构成对象)

FileInputStream fileInputStream = new FileInputStream("e:\\Student.bin");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
Student s = (Student) objectInputStream.readObject();
objectInputStream.close();
System.out.println(s.toString());

 3. 字符流(读取中文可使用)

父类:Reader:字符输入流     Writer:字符输出流 

(1)FileReader 读取字符文件

FileRear fr = new FileReader("e:\\hello.txt");  //创建文件字符输入流

读取和字节文件读取一致。

(2)FileWriter 写入文件

FileWriter fw = new FileWriter("d:\\write.txt");//创建文件字符输出流

写入和字节文件写入一致。

(3)使用FileReader和FileWriter复制文本文件,不能复制图片或二进制文件,使用字节流可复制任何文件。

4.字符缓冲流

(1)BufferedReader

FileRader fileRader = new FileRader("e:\\buffer.txt");
BufferedReader bufferedreader = new BufferedReader(fileRader);
//一行一行的读取
String line = null;
while((line = bufferedreader.readLine())!= null){
    System.out.print(line);
}

 (2)BufferedWriter

FileWriter fileWriter = new FileWriter("e:\\buffer.txt");
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
//写入
for(int i = 0;i<10;i++){
    bufferedWriter.writer("好好学习,天天向上!");
    bufferedWriter.newLine();//写入一个换行符  \r\t
    bufferedWriter.flush();
}
bufferedWriter.close();

 5. PrintWriter

PrintWriter pw = new PrintWriter("d:\\print.txt");

pw.println(trew);

pw.close();

标签:txt,Java,读取,20220617,学习,Student,new,序列化,字节
来源: https://www.cnblogs.com/Joyce-mi7/p/16386181.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有