当前位置: 首页 > news >正文

【蓝桥杯算法题】输入输出流问题

【蓝桥杯算法题】输入输出流问题

    • 题目:对文本文件进行带缓存的读写操作,可以读取文件不同位置的信息,可以进行对象序列化和对象反序列化。
    • 解释:
    • 总结:

题目:对文本文件进行带缓存的读写操作,可以读取文件不同位置的信息,可以进行对象序列化和对象反序列化。

以下是一个简单的示例代码,演示了如何使用BufferedReaderBufferedWriterRandomAccessFile来进行带缓存的读写操作,并且使用ObjectInputStreamObjectOutputStream来进行对象序列化和反序列化


import java.io.*;public class FileIOExample {public static void main(String[] args) throws IOException, ClassNotFoundException {// 读取文件中的文本信息BufferedReader bufferedReader = new BufferedReader(new FileReader("input.txt"));String line;while ((line = bufferedReader.readLine()) != null) {System.out.println(line);}bufferedReader.close();// 在文件中指定位置写入数据RandomAccessFile randomAccessFile = new RandomAccessFile("output.dat", "rw");randomAccessFile.seek(10); // 将文件指针设置到第10个字节的位置randomAccessFile.writeBytes("Hello World!");randomAccessFile.close();// 对象序列化ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("data.dat"));Person person = new Person("张三", 25);objectOutputStream.writeObject(person);objectOutputStream.close();// 对象反序列化ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("data.dat"));Person personRead = (Person) objectInputStream.readObject();objectInputStream.close();System.out.println("姓名:" + personRead.getName() + ",年龄:" + personRead.getAge());}private static class Person implements Serializable {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public int getAge() {return age;}}
}

解释:

  • 这段代码实现了文件的读写以及对象的序列化和反序列化。
  • 首先,通过 BufferedReader 和 FileReader 两个类来读取 input.txt
    文件中的文本信息。对于每一行数据,我们使用 readLine() 方法来读取,并且通过 while 循环输出到控制台上。
  • 接着,使用 RandomAccessFile 类在 output.dat 文件中指定位置写入数据。其中,通过 seek()
    方法将文件指针设置到第 10 个字节的位置,然后使用 writeBytes() 方法向该位置写入 “Hello World!”
    的字符串内容。
  • 接下来,通过 ObjectOutputStream 和 FileOutputStream 两个类来实现对象的序列化。我们创建一个
    Person 类型的对象 person,并将其写入文件 data.dat 中。
  • 最后,通过 ObjectInputStream 和 FileInputStream 两个类来实现对象的反序列化。我们从文件
    data.dat 中读取内容并将其转换为 Person 类型的对象 personRead,并输出该对象的姓名和年龄信息。

总结:

整个程序实现了多种文件操作,包括文本读取、定位写入和对象序列化等,是 Java I/O 操作的典型示例。
首先使用BufferedReader读取了一个文件中的文本信息,并将其打印出来;然后使用RandomAccessFile在文件中指定位置写入了一些数据;最后使用ObjectOutputStreamObjectInputStream对一个自定义对象进行了序列化和反序列化,并将其输出到控制台上。注意,Person类需要实现Serializable接口才可以被序列化。

http://www.lryc.cn/news/90266.html

相关文章:

  • BUG提交单模版一
  • Android 12.0系统默认授予读写权限给第三方app
  • 【生信】R语言在RNA-seq中的应用
  • 【嵌入式环境下linux内核及驱动学习笔记-(14)linux总线、设备、驱动模型之platform】
  • 绝地求生 压q python版
  • 云原生技术中的容器技术有哪些?
  • Gin中间件的详解 ,用Jwt-go 和 Gin 的安全的登陆的中间件
  • Nginx网站部署
  • Hadoop优化
  • FPGA设计的指导性原则 (中)
  • 开源创新 协同融合|2023 开放原子全球开源峰会开源协作平台分论坛即将启幕
  • 第四章 相似矩阵与矩阵对角化
  • 课程11:仓储层Repository实现、AutoMapper自动映射
  • 关于作用域的那些事(进阶)
  • 小技巧notebook
  • 【2451. 差值数组不同的字符串】
  • Java面试-每日十题
  • java.awt.datatransfer.Clipboard剪切板获取String字符串文本
  • HCIA——VLAN
  • 测试分析流程及输出项
  • OO设计原则
  • 《深入理解计算机系统(CSAPP)》第5章 优化程序性能 - 学习笔记
  • 【Spring Boot】033-使用 `@ResponseBody` 注解代替`ServletResponse`?
  • 【openGauss实战13】闪回技术
  • Top大学教授:青年学者,请避免这些写作问题→
  • 使用midjourney搞出一套三国人物画像!
  • ELK日志分析系统
  • 整型在内存中的存储
  • 子集-回溯算法
  • 公司study three