2016-03-02 82 views
1

初學者問題在這裏。此方法應從文本文件讀取一行,刪除空白(並執行其他操作)並將行打印到另一個文件。但是,當我打電話時:帶字符串參數的java調用方法

noWhiteSpace(words.txt, clean.txt); 

它不讀取文件的內容。它只是將輸入文件的名稱寫入新的輸出文件:即「clean.txt」包含字符串「words.txt」,而不包含其他內容。我很困惑。

public static void noWhiteSpace(String inputFileName, String outputFileName) throws FileNotFoundException { 

    Scanner inFile = new Scanner(inputFileName); 
    PrintStream outFile = new PrintStream(outputFileName); 

    while (inFile.hasNext()) {   
     String line = inFile.nextLine(); // read a line 
     line = line.trim();    // eliminate the white space 
     outputFile.println(line);  // print line to output file 
    } 
} 
+1

如果文件不是太大,你可以用 –

+2

怎麼樣'新的掃描儀FileUtils.readLines和FileUtils.writeLines讓您的生活更輕鬆(新的文件(inputFileName))'? – cwschmidt

+0

Yup as @cwschmidt和其他的答案使用掃描儀。 你只是傳遞字符串而不是文件。 – JavaQuest

回答

2

Scanner的構造函數,一個String參數不會做你認爲它。我想你想要的東西,如:

File file = new File(inputFileName); 
try { 
    Scanner sc = new Scanner(file); 
    while (sc.hasNextLine()) { 
     // the rest of your code here 
    } 
    sc.close(); 
} 
catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 

閱讀的javadoc上Scanner API。

/* Constructs a new Scanner that produces values scanned from the specified string. 
Parameters: 
source - A string to scan 
*/ 
public Scanner(String source) 
+0

非常好,謝謝。 – aaronvan

+0

如果這回答了您的問題,請考慮爲未來的用戶「接受」它。 –

0

您需要將一個File實例傳遞給Scanner實例,而不是文件名。

File file = new File(「path/to/file/on/disk」); 掃描儀inFile =新掃描儀(文件);

然後從掃描儀讀取的,像inFile.nextLine()等

相關問題