使用Java访问外部文件

使用Java访问外部文件,java,Java,我正在用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[

我正在用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时,会出现“无法访问文件”错误。这可能是指向外部文件的错误链接吗?和建议帮助。

您所谓的
无法访问文件
错误是由您创建的:

System.out.println("Can't Access File");
当无法找到给定的文件路径和/或文件名时,即:
FileNotFoundException


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

您所谓的
无法访问文件
错误是由您创建的:

System.out.println("Can't Access File");
当无法找到给定的文件路径和/或文件名时,即:
FileNotFoundException


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

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

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

您可以粘贴实际的错误消息(带有堆栈跟踪)吗?可能重复,因此您发布的大多数代码和标记
开关语句
与您遇到的问题完全无关?1)感谢您删除“开关语句”标记。2) 这个异常无疑是“FileNotFoundException”。您应该修改“catch()”块以打印实际的JAVA异常:
ioe.getMessage()
!!!3) 您有一个-Java期望在当前目录下找到“Users/xyz”。错了!使用一个。我将“接受”user3509208的回复。IMHO…你能粘贴到实际的错误消息(带有堆栈跟踪)中吗?可能是重复的,因此你发布的大多数代码和标记
switch statement
与你遇到的问题完全无关?1)感谢你删除了“switch statement”标记。2) 这个异常无疑是“FileNotFoundException”。您应该修改“catch()”块以打印实际的JAVA异常:
ioe.getMessage()
!!!3) 您有一个-Java期望在当前目录下找到“Users/xyz”。错了!使用一个。我将“接受”user3509208的回复。谢谢你的帮助,这个错误信息是误导性的。由于某些原因,路径没有被找到,它可能很简单,但它阻碍了整个过程。我知道了…我忘记了文件路径中的第一个“/”。谢谢你提醒我注意这个问题。你是WC。很高兴我能提供帮助。谢谢你的帮助,那个错误消息是误导性的。由于某些原因,路径没有被找到,它可能很简单,但它阻碍了整个过程。我知道了…我忘记了文件路径中的第一个“/”。谢谢你提醒我注意这个问题。你是WC。很高兴我能帮忙。