2011-06-09 52 views
11

網頁輸入一個文件在Java中是指一個固定的路徑上的大多數例子在那裏:用戶輸入文件控制檯/命令行 - 的Java

File file = new File("myfile.txt");

怎麼樣從控制檯的用戶輸入的文件?比方說,我希望用戶輸入一個文件:

System.out.println("Enter a file to read: ");

什麼選擇我都(使用盡可能少的代碼越好)在處理用戶指定的文件中讀取。一旦我有文件,我可以轉換爲字符串等...我認爲它與BufferedReader,Scanner,FileInputStream,DataInputStream等有關...我只是不知道如何結合使用這些得到最有效的方法。

我是初學者,所以我很可能會錯過簡單的東西。但我一直在搞這個一段時間沒有用。

在此先感謝。

回答

18

讓用戶輸入一個文件名,有幾種可能性:

作爲命令行參數。

public static void main(String[] args) { 
    if (0 < args.length) { 
    String filename = args[0]; 
    File file = new File(filename); 
    } 
} 

通過要求用戶給它輸入:

Scanner scanner = new Scanner(System.in); 
System.out.print("Enter a file name: "); 
System.out.flush(); 
String filename = scanner.nextLine(); 
File file = new File(filename); 
+0

我不認爲你需要在這種情況下刷新:http://stackoverflow.com/questions/7166328/when-why -to-call-system-out-flush-in-java – 2015-12-06 21:11:30

+0

@HunterS:另一個問題提到了一些不需要'flush'的情況。上面的代碼不是其中之一,因此我決定最好明確一點。根據[PrintStream](http://docs.oracle.com/javase/7/docs/api/java/io/PrintStream.html#write(int))Javadoc,在這種情況下,由於字符串的作用不包含'\ n'字符。 – 2015-12-12 12:05:10

1

使用java.io.BufferedReader中

String readLine = ""; 
try { 
     BufferedReader br = new BufferedReader(new FileReader(<the filename>)); 
     while ((readLine = br.readLine()) != null) { 
     System.out.println(readLine); 
     } // end while 
    } // end try 
    catch (IOException e) { 
     System.err.println("Error Happened: " + e); 
    } 

,並填補了while循環與您的數據處理。

問候, 斯特凡