%ddd 2024-05-22 16:01 采纳率: 86.7%
浏览 4
已结题

Java实验报告IO流与文件操作

IO流与文件操作实验报告Java,求设计思路与文件代码以及运行结果截图。

img

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-22 16:01
    关注

    引自免费微信小程序:皆我百晓生

    实验四:流与文件操作

    设计思路: 本实验主要涉及Java I/O流和文件操作的基本概念和技术。以下是每个任务的详细设计方案:

    1. 文件拷贝

      • 创建一个新文件,将原文件内容读取并写入到新文件中。
      • 在新文件末尾追加“拷贝完成”。
    2. 随机读写文件

      • 打开文件,写入10个double类型的数值。
      • 再次打开文件,定位到第六个位置并覆盖该位置的数值。
      • 最后打开文件,逆序读取并输出10个数值。
    3. 序列化与反序列化

      • 定义User类,包含username和password属性。
      • 使用ObjectInputStream和ObjectOutputStream进行序列化和反序列化操作。
    4. 展示文件夹结构

      • 使用递归遍历文件夹,获取所有子目录和文件,并按照树形结构打印。

    核心代码:

    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的源文件,并在相应路径下创建其他所需文件。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月30日
  • 已采纳回答 5月22日
  • 创建了问题 5月22日

悬赏问题

  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit
  • ¥15 请问双层规划模型的上下层目标函数不一致,是如何保证迭代收敛性的
  • ¥30 微信小程序 前端页面内容搜索