2015-12-30 59 views
-2

此程序不是在我想要的目錄中創建文件。但是,當我僅僅創建文件而沒有指定任何路徑時,它可以正常工作。Java不在指定目錄中創建文件

import java.io.File; 
import java.util.Scanner; 

public class FileCreator { 

    public static void main(String[] args) { 

     Scanner input = new Scanner(System.in); 
     String inputString = input.nextLine(); 
     File newFile = new File("C:\\Users\\" + inputString + ".txt"); 


     if(newFile.exists() == false) { 

      try { 
       newFile.createNewFile(); 
       System.out.println(inputString + ".txt hasbeen created."); 
      } 
      catch (Exception e) { 
       System.err.println("Error"); 
      } 
     } 
     else { 

      System.out.println("File Already Exists"); 
     } 
    } 
} 
+2

你是什麼意思它不是創建文件?它拋出一個錯誤?怎麼了? – redFIVE

+2

您是否嘗試過打印出異常消息來查看問題所在?的System.out.println(e.getMessage()); – bhooks

+2

你正在壓制這個錯誤,捕捉這樣的一般異常會導致錯誤信息的泄漏。爲了進行調試,嘗試刪除catch並讓異常拋出。它可能會說比「錯誤」更有價值的東西。 –

回答

1

我猜你可能不知道一個例外可能是,這是一個錯誤,你要avoid'em但在案件的錯誤實際上可能會有所幫助,如果你沒有扔掉所有的信息,它你甚至可能已經解決了你自己。

catch (Exception e) { 
    System.err.println("Error"); 
} 

編譯器可能實際上試圖告訴你什麼是錯誤的,但是你將所有的信息都扔掉了。應該在出現錯誤時使用異常處理,並將其作爲非錯誤的有效選項,並且不希望軟件因此而停止。在你的情況下,e.printStackTrace()可能會有所幫助,這樣編譯器會實際打印出什麼是錯的。

0

看來您正試圖在系統C:\Users目錄中創建您的文件。嘗試爲您的源文件創建自己的目錄(位於您自己的主目錄下),而不是將它們放入系統路徑中。 您可能沒有寫入該目錄的權限。

0

嘗試的printStackTrace方法:

catch (Exception e) { 
    e.printStackTrace(); 
} 

可能產生java.io.IOException:訪問被拒絕。

嘗試使用其他的路徑位置或使自己的目錄中:

File newFile = new File("C:\\temp\\" + inputString + ".txt");