2013-04-09 4 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

해야합니다. *; 당신이 "사용하지 못하게하는 Im"이라는 뜻입니다. –

+0

프로젝트의 일부분이며 아직 BufferedReader가 덮여 있지 않습니다 – user2205055

+0

'reader '가 파일을 읽는지 여부를 확인할 수 있습니까? – John

답변

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

사용 next() 대신 hasNext().

hasNext() - 입력에 토큰이 더있는 지 여부 만 알려줍니다.

next() - 입력에서 다음 완전한 토큰을 반환합니다.

1

이 두 클래스가 같은 System.io에

Scanner reader = new Scanner(new File(inputFile)); 
FileWriter writer = new FileWriter(tempFile); 
while(reader.hasNextLine()) { 
    String currentLine = reader.nextLine(); 
    ... 
관련 문제