IO流与文件操作实验报告Java,求设计思路与文件代码以及运行结果截图。
3条回答 默认 最新
关注
引自免费微信小程序:皆我百晓生
实验四:流与文件操作
设计思路: 本实验主要涉及Java I/O流和文件操作的基本概念和技术。以下是每个任务的详细设计方案:
-
文件拷贝
- 创建一个新文件,将原文件内容读取并写入到新文件中。
- 在新文件末尾追加“拷贝完成”。
-
随机读写文件
- 打开文件,写入10个double类型的数值。
- 再次打开文件,定位到第六个位置并覆盖该位置的数值。
- 最后打开文件,逆序读取并输出10个数值。
-
序列化与反序列化
- 定义User类,包含username和password属性。
- 使用ObjectInputStream和ObjectOutputStream进行序列化和反序列化操作。
-
展示文件夹结构
- 使用递归遍历文件夹,获取所有子目录和文件,并按照树形结构打印。
核心代码:
import java.io.*; import java.util.*; public class FileOperations { // 任务1:文件拷贝 public static void copyFile(String sourcePath, String destinationPath) throws IOException { File src = new File(sourcePath); File dst = new File(destinationPath); try (BufferedReader reader = new BufferedReader(new FileReader(src)); BufferedWriter writer = new BufferedWriter(new FileWriter(dst))) { String line; while ((line = reader.readLine()) != null) { writer.write(line + "\n"); } writer.newLine(); writer.write("拷贝完成"); } } // 任务2:随机读写文件 public static void randomReadWrite(String filePath) throws IOException { List<Double> numbers = Arrays.asList(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0); try (RandomAccessFile file = new RandomAccessFile(filePath, "rw")) { for (int i = 0; i < numbers.size(); i++) { file.seek(i * Double.BYTES); file.writeDouble(numbers.get(i)); } } try (RandomAccessFile file = new RandomAccessFile(filePath, "rw")) { file.seek(5 * Double.BYTES); // 跳转到第六个位置 file.writeDouble(666.0); // 写入新的值 } try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) { String line; int index = 9; while ((line = reader.readLine()) != null && index >= 0) { System.out.printf("%d: %f%n", index, Double.parseDouble(line)); index--; } } } // 任务3:序列化与反序列化 public static void serializeDeserialize(String filename) throws IOException, ClassNotFoundException { User user = new User("Alice", "secret"); try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) { oos.writeObject(user); } try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) { User deserializedUser = (User) ois.readObject(); System.out.println("Deserialized username: " + deserializedUser.getUsername()); System.out.println("Deserialized password: " + deserializedUser.getPassword()); } } // 任务4:展示文件夹结构 public static void displayFolderStructure(File folder, int level) { if (folder == null || !folder.exists() || !folder.isDirectory()) return; for (File file : folder.listFiles()) { for (int i = 0; i < level; i++) { System.out.print("\t"); } if (file.isDirectory()) { System.out.print("- "); displayFolderStructure(file, level + 1); } else { System.out.print("|-- "); System.out.println(file.getName()); } } } public static void main(String[] args) throws Exception { // 运行实验任务 copyFile("source.txt", "copy_source.txt"); randomReadWrite("test.dat"); serializeDeserialize("user.ser"); displayFolderStructure(new File("/path/to/your/directory"), 0); } } class User implements Serializable { private String username; private String password; public User(String username, String password) { this.username = username; this.password = password; } // Getters and Setters public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
运行结果截图: 由于这是一个文本交互平台,无法提供实际的屏幕截图。你需要在本地环境中运行上述代码,然后根据输出查看实验结果。
注意:请确保将代码中的"/path/to/your/directory"替换为实际的文件夹路径。同时,你需要创建一个名为“source.txt”的文件作为任务1的源文件,并在相应路径下创建其他所需文件。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录-
悬赏问题
- ¥30 不会,学习,有偿解答
- ¥15 SQL查询语句报错(检查)
- ¥15 此表中公式应该怎么写
- ¥15 求HI-TECH PICC 9.50 PL3安装包
- ¥15 下载ctorch报错,求解
- ¥15 如何入门学习c语言,单片机
- ¥15 idea 编辑语言的选择
- ¥15 Windows下部署Asmjit
- ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
- ¥30 微信小程序 前端页面内容搜索