【问题标题】:Accessing External file Java访问外部文件 Java
【发布时间】:2023-03-27 16:26:01
【问题描述】:

我正在用 Java 创建一个任务列表应用程序,但在尝试从我的代码中访问外部文件时遇到了问题。这是我目前所拥有的:

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

public class Main {

    public static String fileName = "Users/bobsmith/Desktop/tasklistjava/src/javatask.txt";

    public static void main(String[] args) throws IOException {

        int menuItem = -1;
        while(menuItem != 0){
            menuItem = menu();
            switch (menuItem){
                case 1:
                    showTaskList();
                    break;
                case 2:
                    addTask();
                    break;
                case 3:
                    sortList();
                    break;
                case 0:
                    break;
                default:
                    System.out.println("Invalid Input");

            }
        }
    }
    static int menu(){
        int choice;
        Scanner sc = new Scanner(System.in);
        System.out.println("\n Task List Menu \n");
        System.out.println("0: Exit Menu");
        System.out.println("1: Show Tasks in List");
        System.out.println("2: Add Task to List");
        System.out.println("3: Sort Tasks by Due Date");
        System.out.println();
        System.out.println("Enter a Task: ");
        choice = sc.nextInt();
        return choice;
    }

    static void showTaskList(){
        System.out.println("\nTask List\n");
        try {
            Scanner inFile = new Scanner(new FileReader(fileName));
            String line;
            int number = 1;
            while(inFile.hasNextLine()){
                line = inFile.nextLine();
                System.out.println(number + " ");
                System.out.println(line);
                ++number;
            }
            System.out.println();
            inFile.close();
        } catch (FileNotFoundException ioe) {
            System.out.println("Can't Access File");
        }
    }

    static void addTask(){
        System.out.println("\nAdd Task\n");
        try {
            Scanner input = new Scanner(System.in);
            PrintWriter outFile = new PrintWriter(new FileWriter(fileName, true));
            System.out.println("Enter a Task: ");
            String addedTask = input.nextLine();
            System.out.println("You Must set a Due Date for this task: ");
            String dueDate = input.nextLine();
            outFile.println(addedTask + " " + dueDate);
            outFile.close();
        } catch (IOException ioe) {
            System.out.println("Can't Access File");
        }
    }
    static void sortList(){}

}

当我输入选项 1 或 2 时,我收到“无法访问文件”错误。这可能只是指向外部文件的错误链接吗?建议会有所帮助。

【问题讨论】:

  • 你能粘贴 actual 错误消息(带有堆栈跟踪)吗?
  • 所以您发布的大部分代码以及标签switch-statement 与您遇到的问题完全无关?
  • 1) 感谢您删除“switch-statement”标签。 2) 异常无疑是“FileNotFoundException”。您应该修改您的“catch()”块打印实际的 JAVA 异常ioe.getMessage()!!! 3) 你有一个relative path - Java 期望在在你当前的目录下找到“Users/xyz”。错误的!使用fully qualified path。我会“接受”user3509208 的回复。恕我直言...

标签: java


【解决方案1】:

您所谓的can't access file 错误是由您创建的:

System.out.println("Can't Access File");

当无法找到给定的文件路径和/或文件名时触发此问题,即:FileNotFoundException

确保您提供正确的文件名和/或文件路径。

【讨论】:

    【解决方案2】:

    我尝试运行代码。您需要提及文件的完整路径,例如C:/tempDir/xyz.txt。 此外,您抛出的异常具有误导性。即使您有 IOE,您也会抛出“无法访问文件”,这表明您的应用程序无法访问文件,但事实并非如此。应该是 System.out.println(ioe); 这是告诉你实际的错误。

    【讨论】:

    • 感谢您的帮助,该错误消息具有误导性。由于某种原因找不到路径,它可能很简单,但它阻碍了整个事情
    • 我知道了...我忘记了文件路径中的第一个“/”...感谢您关注此问题
    • 你是厕所。很高兴我能提供帮助。
    猜你喜欢
    • 2011-01-15
    • 1970-01-01
    • 2013-09-09
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2016-08-02
    • 1970-01-01
    相关资源
    最近更新 更多