2013-04-09 2 views
-3

Я пишу этот код, чтобы удалить слово из текстового файла и не могу заставить сканер работать. Он будет работать с bufferedreader, но я не могу использовать его. Что я здесь делаю неправильно?Сканер не работает вместо буферизованного считывателя

public static void Option2Method(String dictionary) throws IOException 
{ 

    File inputFile = new File(dictionary); 
    File tempFile = new File("TempDict.txt"); 
    String tempword = JOptionPane.showInputDialog(null, "Enter a word to remove"); 
    String lineToRemove = tempword.toLowerCase(); 
    lineToRemove = lineToRemove.replaceAll(",", ""); 
    lineToRemove = lineToRemove.replaceAll("\\.", ""); 
    lineToRemove = lineToRemove.replaceAll("\\?", ""); 
    lineToRemove = lineToRemove.replaceAll(" ", ""); 

    Scanner reader = new Scanner(new File(inputFile)); 
    FileWriter writer = new FileWriter(tempFile); 
    String currentLine; 

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

Оба класса находятся в той же System.IO *. waht вы подразумеваете под «Im не разрешено использовать это» –

+0

Его часть проекта, и мы havent охвачены BufferedReader еще – user2205055

+0

Можете ли вы проверить, читает ли «читатель» файл? – John

ответ

1
while((currentLine = reader.next()) != null) 

Использование next() вместо hasNext().

hasNext() - это только скажет, есть ли еще токен, присутствующий на его входе или нет.

next() - это возвращает следующий полный токен с его ввода.

1

он должен быть

Scanner reader = new Scanner(new File(inputFile)); 
FileWriter writer = new FileWriter(tempFile); 
while(reader.hasNextLine()) { 
    String currentLine = reader.nextLine(); 
    ... 
Смежные вопросы