1

我已经阅读了我的书以及我的老师使用 FileNotFoundException 之类的异常就读写方法主题制作的幻灯片。我已经编写了很多代码并让它工作,允许我向用户询问文件路径并读取此文件并将其显示在控制台上。我正在努力反转文件文本并将这个新文本输出到文件以保存/创建。我的书没有解释如何在同一个程序上同时执行读取和写入方法。所以我写的输出代码可能是非常错误的。我在互联网上搜索了一些寻求帮助,但没有找到任何可以帮助我的东西,因为我想让用户输入他们想要读取和写入的文件位置。

我想要: 1. 创建一个允许用户选择文件名并将文件内容输出到控制台的类。推荐使用文本文件来显示,java文件是文本文件。您可能希望将此代码放在一个方法中,以允许您在不覆盖代码的情况下完成此分配的其余部分。一个。要求用户输入文件的完整路径,以确保您正在处理正确的文件。2.修改你的代码/添加一个方法来以相反的顺序显示文件的内容。您不需要反转每行上的字符,只需以相反的顺序输出文件的行。一个。将文件内容读入一个ArrayList,然后遍历ArrayList。3. 最后,将文件内容复制到另一个文件中。您将需要遍历文件并将每一行写入一个新文件。我还想创建一个新异常 FileMissingException,它将扩展 FileNotFoundException。您将需要创建一个单独的类来保存您的新异常。修改您的代码以捕获 FileNotFoundException 并引发 FileMissingException。在您的 main() 中捕获 FileMissingException 并打印 message.from 异常。

由于我必须完成所有工作,该程序变得有点杂乱无章。请记住,我是编程入门,所以有很多我不明白的地方,但我会尽力而为。你们给我的任何提示都会非常有帮助。

我写的新代码:

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

    public class TextFile 
    {
    private static ArrayList<String> filesData = new ArrayList<String>();
    private static Scanner console = new Scanner(System.in);
    public static void main(String[] args) throws FileNotFoundException
    {
    System.out.println("Input file: ");
    String fileNameInput = console.nextLine();
    // Construct the Scanner and PrintWriter objects for reading and writing
    File inputFile = new File(fileNameInput);
    Scanner in = new Scanner(inputFile);

    do
    {
        // Asks the user what they would like to do with the file info based on number input.
        System.out.println("Please enter the number for your choice: ");
        System.out.println("1. Display the contents of the file.");
        System.out.println("2. Reverse the contents of the file.");
        System.out.println("3. Write the contents of the file to a new file.");
        System.out.println("0. Exits the program");
        int num = console.nextInt();
        console.nextLine();
        switch(num)
        {
            case 0:
                in.close();
                System.exit(0);
                break;
            case 1:
                while (in.hasNext())
                {
                    String lines = in.nextLine();
                    System.out.println(lines);
                }
                break;
            case 2:
                displayReverse(inputFile);
                break;
            case 3:
                outputFile(inputFile);
                break;
            default:
                break;
        }
    }while (true);
}
public static void displayReverse(File inputFile) throws FileNotFoundException
{
    Scanner in = new Scanner(inputFile);
    while (in.hasNext())
    {
        String text = in.next();
        filesData.add(text);
    }
    for (int i = filesData.size(); i > 0; i--)
    {
        System.out.print(filesData.get(i - 1) + " ");
    }
    in.close();
}
public static void outputFile(File inputFile) throws FileNotFoundException
{       
    System.out.println("Name your new file(hint: do not worry about a complete path here!): ");
    String outputFileName = inputFile.getParentFile() + "\\" + console.nextLine();
    Scanner in = new Scanner(inputFile);
    PrintWriter outFiles = new PrintWriter(outputFileName);
    while (in.hasNext())
    {
        String line = in.next();
        outFiles.print(line + " ");
    }
    outFiles.close();
    in.close();
}

}

4

0 回答 0