2013-04-07 86 views
0

我在寫代碼刪除一個字的文本文件,當用戶輸入,但我不能似乎得到掃描器部工作文本文件錯誤掃描

public static void Option2Method() throws IOException 
{ 

File inputFile = new File("wordlist.txt"); 
File tempFile = new File("TempWordlist.txt"); 
String lineToRemove = JOptionPane.showInputDialog(null, "Enter a word to remove"); 
Scanner reader = new Scanner(inputFile); 
Scanner writer =new Scanner(tempFile); 
String currentLine; 

while((currentLine = reader.nextLine()) != null) 
{ 
String trimmedLine = currentLine.trim(); 
if(trimmedLine.equals(lineToRemove)) continue; 
writer.print(currentLine + "\n"); 
} 
reader.close(); 
writer.close(); 
inputFile.delete(); 
tempFile.renameTo(inputFile); 
} 
+0

當你有問題嗎? – 2013-04-07 10:49:04

+0

給writer.print一個錯誤(currentLine +「\ n」);它說它找不到符號 – user2205055 2013-04-07 10:51:23

回答

1

Scanner並不意味着寫入文件,因此沒有一個write()方法。您可以改用BufferedWriter

例子:

public static void Option2Method() throws IOException { 

    File inputFile = new File("wordlist.txt"); 
    FileWriter fstream = new FileWriter("TempWordlist.txt", true); 
    BufferedWriter writer = new BufferedWriter(fstream); 

    File tempFile = new File("TempWordlist.txt"); 
    String lineToRemove = JOptionPane.showInputDialog(null, "Enter a word to remove"); 
    Scanner reader = new Scanner(inputFile); 

    while (reader.hasNextLine()) { 
     String trimmedLine = reader.nextLine().trim(); 
     if (trimmedLine.equals(lineToRemove)) 
      continue; 

     writer.write(trimmedLine + "\n"); 
    } 

    reader.close(); 
    writer.close(); 
    inputFile.delete(); 
    tempFile.renameTo(inputFile); 
} 

使用PrintWriter

File inputFile = new File("wordlist.txt"); 
    PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("TempWordlist.txt", true))); 

    File tempFile = new File("TempWordlist.txt"); 
    String lineToRemove = JOptionPane.showInputDialog(null, "Enter a word to remove"); 
    Scanner reader = new Scanner(inputFile); 

    while (reader.hasNextLine()) { 
     String trimmedLine = reader.nextLine().trim(); 
     if (trimmedLine.equals(lineToRemove)) 
      continue; 

     writer.print(trimmedLine + "\n"); 
    } 

    reader.close(); 
    writer.close(); 
    inputFile.delete(); 
    tempFile.renameTo(inputFile); 
+0

那麼有沒有辦法用PrintWriter? – user2205055 2013-04-07 13:28:54

+0

是的。我已將它添加到答案中。 – Tiago 2013-04-07 17:00:56

0

Scanner沒有print方法。它用於掃描一個文件和讀取來自它的數據。

如果你想寫入一個文件,使用thisthat或只是谷歌「java write to file

+0

是的,但我不允許使用BufferedReader,多數民衆贊成在問題 – user2205055 2013-04-07 10:58:23

+1

你不需要BufferedReader,你需要BufferedWriter – BobTheBuilder 2013-04-07 10:59:45