2016-11-10 3 views
0

내 코드의 목표는 Scanner을 사용하여 텍스트 파일을 읽은 다음 텍스트 입력란을 통해 사용자 입력을받는 것입니다.스캐너를 사용하여 텍스트 파일의 단어를 바꾸려면 어떻게합니까?

그러면 스캐너는 텍스트 파일을 반복하여 해당 사용자 입력의 인스턴스를 찾으려고 시도합니다. 그런 다음 해당 입력을 찾으면 텍스트 파일 내의 단어를 바꿉니다.

그런 다음 한 단어 만 변경하여 파일에 다시 쓰십시오.

내 문제는 내가 스캐너를 사용하기 전에 스캐너를 사용하지 않고 올바르게 진행하는 방법이 확실하지 않다는 것입니다.

Scanner read = new Scanner("test test.txt"); 

    //Converting user input from editSerialField to a scanner 
    Scanner scEditSerial = new Scanner(editSerialField.getText()); 
    String scSerial = scEditSerial.nextLine(); 
    //Converting user input from editLocationField to a scanner 
    Scanner scEditLocation = new Scanner(editLocationField.getText()); 
    String scLocation = scEditSerial.nextLine(); 

    while (read.hasNextLine()) 
    { 
     //If my text file contains the user input from the text field 
     if (read.hasNext(scSerial)) 
     { 
      //Code to replace instance of editSerialField in text file 
     } 

     //Code to write back to the file 
    } 

가 어떻게 텍스트 파일 내에서 단어를 대체 할 Scanner를 사용합니까 : 여기

내 코드는 버튼 클릭으로 활성화되도록 걸리나요? 그렇게하기 위해 다른 수업을 사용해야합니까?

내 코드 진행 방법에 대해 고민하고 있으므로 도움을 주시면 대단히 감사하겠습니다.

+0

그래서 * 왜 * 스캐너를 사용하여 파일을 읽으시겠습니까? 파일을 어떻게 작성 하시겠습니까? 'FileWriter' 주위의'PrintWriter'? 그렇다면'FileReader'를 중심으로'BufferedReader'를 사용하여 읽지 않으시겠습니까? --- * 참고 : * 만약 당신이하고있는 일이 전체 라인을 읽는 것이라면,'BufferedReader'는'Scanner'보다 ** ** ** ** 빠릅니다. – Andreas

+0

내 파일의 모든 줄을 읽고 텍스트 파일 내의 사용자 입력 인스턴스를 다른 사용자 입력으로 바꿔야합니다. 나는 '스캐너 (Scanner)'가 라인을 스캔하고 단어를 대체하는 가장 좋은 방법이라고 생각했다. '스캐너'를 사용하여 단어를 대체하는 방법을 잘 모르겠습니다. 나는 Java를 처음 사용하기 때문에 다른 클래스를 사용해야할지 모르겠습니다. – juiceb0xk

+0

'스캐너 '를 사용하여 * 단어를 대체 할 수 없습니다. 'Scanner '는 * reading * (일명 스캐닝) 입력에 사용됩니다. 아마 정규 표현식에 대해 알기에는 너무 새롭기 때문에,'indexOf()'와'substring()'은 아마도 문자열의 텍스트를 대체하기 위해 사용되는 메소드 일 것입니다. – Andreas

답변

0

Scanner 클래스를 사용하여 수행 할 수 없습니다. Scanner 클래스는 읽기 전용으로 사용됩니다. 당신은 아래의 단어를 대체 할 수

Path path = Paths.get("test.txt"); 
Charset charset = StandardCharsets.UTF_8; 

String content = new String(Files.readAllBytes(path), charset); 
content = content.replaceAll("foo", "bar"); 
Files.write(path, content.getBytes(charset)); 

또는 당신은 또한 BufferedWriter 또는 FileWriter을 볼 수 있습니다. 작업 예제를 수행 할 수 있습니다 here

관련 문제