Java学习——day19

文章目录

  • 1. 文件管理工具设计
    • 1.1 功能模块
    • 1.2 异常处理
  • 2. 实践任务详细步骤
    • 2.1 用户输入与文件路径检查
    • 2.2 文件内容读取
    • 2.3 文件内容修改与保存
    • 2.4 创建新文件并写入内容
  • 3. 编程实践中的注意事项
  • 3.1 完整代码
  • 4. 总结
  • 5. 今日生词

今日学习内容:
第 5 天:文件管理工具(综合实践)
学习内容
文件管理工具设计:
允许用户:
创建文件或目录。
读取并显示文件内容。
修改文件内容并保存。
处理异常:
文件不存在的异常 FileNotFoundException。
I/O 读取失败的异常 IOException。
实践任务
编写 Java 文件管理工具:
用户可以输入文件路径,程序检查文件是否存在。
允许用户读取文件内容,并选择修改文件内容后保存。
允许用户创建新文件并写入内容。

1. 文件管理工具设计

1.1 功能模块

  • 文件/目录的创建

    • 用户可以选择创建文件或目录。
    • 使用 Java 中的File类方法,如 createNewFile()(创建文件)、mkdir() mkdirs()(创建目录)。
  • 文件内容的读取与显示

    • 使用 FileReaderBufferedReader 对文件进行读取。
    • 逐行读取后显示在控制台或其他用户界面上。
  • 文件内容的修改与保存

    • 读取完文件内容后,允许用户输入新的内容。
    • 利用 FileWriter BufferedWriter 将新内容写入文件,完成保存操作。

1.2 异常处理

  • FileNotFoundException
    • 当用户输入的文件路径不存在时,捕获该异常。
    • 提示用户文件不存在,并提供创建新文件的选项。
  • IOException
    • 处理在文件读写过程中可能发生的 I/O 异常。
    • 保证程序不会因为 I/O 问题而崩溃,同时给予用户友好的错误提示。

2. 实践任务详细步骤

2.1 用户输入与文件路径检查

  • 步骤说明

    • 程序启动后提示用户输入文件路径。
    • 利用new File(filePath)创建文件对象,并通过 file.exists() 判断文件是否存在。
  • 关键点

    • 若文件存在,则进入读取与修改流程;
    • 若文件不存在,则询问用户是否创建新文件。

2.2 文件内容读取

  • 实现思路

    • 使用 FileReaderBufferedReader对文件进行读取。
    • 通过循环逐行读取文件内容并显示给用户。
  • 异常捕获

    • 捕获 FileNotFoundException,在文件不存在时给予提示。
    • 捕获 IOException,处理读取过程中可能出现的异常。
  • 示例代码

try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
} catch (FileNotFoundException e) {
    System.out.println("文件未找到: " + e.getMessage());
} catch (IOException e) {
    System.out.println("读取文件失败: " + e.getMessage());
}

2.3 文件内容修改与保存

  • 实现思路

    • 在读取完原始内容后,询问用户是否要修改内容。
    • 接收用户的修改输入,然后利用 FileWriter BufferedWriter写入更新后的内容。
  • 异常捕获

    • 使用 try-catch 块捕获 IOException,确保写入过程中的异常能够被妥善处理。
  • 示例代码

try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
    writer.write(newContent);
} catch (IOException e) {
    System.out.println("写入文件失败: " + e.getMessage());
}

2.4 创建新文件并写入内容

  • 实现思路

    • 若文件检查结果显示文件不存在,提示用户是否需要创建一个新文件。
    • 使用 file.createNewFile() 方法创建文件,随后接收用户输入内容写入新文件。
  • 异常捕获

    • 同样需要捕获 IOException,处理文件创建过程中可能出现的异常。
  • 示例代码

try {
    if(file.createNewFile()){
        System.out.println("文件创建成功");
    } else {
        System.out.println("文件已存在");
    }
} catch (IOException e) {
    System.out.println("文件创建失败: " + e.getMessage());
}

3. 编程实践中的注意事项

1.资源管理

  • 推荐使用 try-with-resources 语法,确保文件流能够自动关闭,避免资源泄露。

2.用户输入校验

  • 在处理用户输入时,要验证路径格式、内容合法性等,防止因错误输入导致程序异常。

3.异常提示信息友好性

  • 在异常捕获块中,提供清晰、易懂的提示信息,帮助用户理解问题所在。

4.文件编码问题

  • 如有必要,考虑使用 InputStreamReader 指定文件的编码格式,防止中文或特殊字符乱码问题。

3.1 完整代码

import java.io.*;
import java.util.Scanner;

public class FileManager {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入文件路径:");
        String filePath = scanner.nextLine();
        File file = new File(filePath);

        if (file.exists()) {
            // 文件存在,读取并显示内容
            System.out.println("文件存在,内容如下:");
            readFile(file);
            System.out.println("是否需要修改文件内容? (yes/no)");
            String response = scanner.nextLine();
            if (response.equalsIgnoreCase("yes") || response.equalsIgnoreCase("y")) {
                System.out.println("请输入新的内容(输入单独一行 exit 表示结束):");
                String newContent = readMultilineInput(scanner);
                writeFile(file, newContent);
            } else {
                System.out.println("不修改文件内容,程序结束。");
            }
        } else {
            // 文件不存在,询问是否创建新文件
            System.out.println("文件不存在,是否创建新文件? (yes/no)");
            String response = scanner.nextLine();
            if (response.equalsIgnoreCase("yes") || response.equalsIgnoreCase("y")) {
                try {
                    if (file.createNewFile()) {
                        System.out.println("文件创建成功。");
                        System.out.println("请输入要写入文件的内容(输入单独一行 exit 表示结束):");
                        String content = readMultilineInput(scanner);
                        writeFile(file, content);
                    } else {
                        System.out.println("文件创建失败或文件已存在。");
                    }
                } catch (IOException e) {
                    System.out.println("文件创建失败: " + e.getMessage());
                }
            } else {
                System.out.println("未创建文件,程序结束。");
            }
        }
        scanner.close();
    }

    // 方法:读取文件内容并显示到控制台
    public static void readFile(File file) {
        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到: " + e.getMessage());
        } catch (IOException e) {
            System.out.println("读取文件失败: " + e.getMessage());
        }
    }

    // 方法:写入内容到文件
    public static void writeFile(File file, String content) {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
            writer.write(content);
            System.out.println("文件已保存。");
        } catch (IOException e) {
            System.out.println("写入文件失败: " + e.getMessage());
        }
    }

    // 方法:读取多行输入,以单独一行 "exit" 作为结束标识
    public static String readMultilineInput(Scanner scanner) {
        StringBuilder content = new StringBuilder();
        String line;
        while (!(line = scanner.nextLine()).equals("exit")) {
            content.append(line).append(System.lineSeparator());
        }
        return content.toString();
    }
}

此代码可实现以上要点包括内容。

4. 总结

  • 理论与实践结合
    今天的学习内容不仅涵盖了文件管理工具设计的基本原理,还通过具体的 Java 实践任务将理论应用到实际编程中。

  • 全面的异常处理能力
    通过处理 FileNotFoundException IOException,学会了如何在面对文件操作中的常见问题时,给予用户明确的错误提示,并保证程序的健壮性。

  • 实践反馈
    编写实际代码并调试过程中,将更深刻体会到文件操作中细节的重要性,例如资源管理、用户输入校验以及异常处理等。

5. 今日生词

1.substantial 2.perceive 3.notwithstanding 4.sustain 5.inevitable

你可能感兴趣的:(java,学习)