2016-02-05 158 views
0

我在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[] 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時,我得到「無法訪問文件」錯誤。這可能只是一個不好的鏈接到外部文件?和建議幫助。

+0

你可以粘貼_actual_錯誤消息(帶有堆棧跟蹤)嗎? – iamnotmaynard

+0

可能的重複[我應該如何將文件加載到我的Java應用程序中?](http://stackoverflow.com/questions/6639/how-should-i-load-files-into-my-java-application) – Idos

+0

因此,你發佈的大部分代碼和'switch-statement'標籤與你遇到的問題完全不相關? – khelwood

回答

3

是由你創建你的所謂can't access file錯誤:

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

是什麼導致這當給定的文件路徑和/或文件名不能定位,即:FileNotFoundException

請務必提供正確的文件名和/或文件路徑。

2

我試着運行代碼。您需要提及文件的完整路徑,例如C:/tempDir/xyz.txt。 另外你拋出的例外是誤導。即使您擁有IOE,也會拋出「無法訪問文件」,這意味着您的應用程序無法訪問不是這種情況的文件。它應該是System.out.println(ioe); 這是告訴你實際的錯誤。

+0

感謝您的幫助,該錯誤信息是誤導。出於某種原因,找不到路徑,它可能是簡單的東西,但它支撐着整個事物 – Rassisland

+0

我明白了......我忘記了我的文件路徑中的第一個「/」......感謝您引起我的注意至此 – Rassisland

+0

你是WC。很高興我能夠提供幫助。 – user3509208