2016-07-29 3 views
0

자바에서 chatbot을 만드는 중이고 특정 주제에 대한 환경 설정을 무작위로 생성하고 환경 설정을 파일에 쓸 수 있기를 원합니다. 예를 들어, 대화방에 "케이크가 마음에 드냐?"라고 물으면 전에는 "케이크"에 대해 아직 물어 본 적이 없으며, 임의의 선호도 (true 또는 false)를 생성합니다. 그런 다음 파일 ("chatbotPreferences.txt"또는 이와 비슷한 항목)에 환경 설정을 지정합니다.이 환경 설정은 나중에 "케이크"주제가 다시 발생하는 경우 검색 할 수 있습니다. 내가 가지고있는 주된 문제는 프로그램을 실행할 때마다 파일 덮어 쓰기입니다. 그래서 "cake"에 대해 토론하고 파일에 "cake = true"라고 쓰면 다시 실행하고 "pie"와 "pie = false"에 대해 물어 봅니다. 그러나 "cake = true "가 표시되지 않습니다.
덮어 쓰지 않도록하는 방법이 있습니까? 아니면 다른 사람이이 작업을 수행 할 수있는 방법이 있습니까? 당신은어떻게 덮어 쓰지 않고 자바로 텍스트 파일에 추가합니까?

+1

* 축 어적으로 * 검색 엔진을 사용해 보았습니까? 이것은 자주 묻습니다, 당신은 문제를 발견해서는 안됩니다. – Polygnome

+4

이 링크로 이동 [app-text-to-an-existing-file-in-java] (http://stackoverflow.com/questions/1625234/how-to-append-text-to-an) -existing-file-in-java) – kar09

답변

0

난 당신이 파일을 작성하는 방법을 모르는 감사하지만, FileWriter 사용하여, 그것은 아주 간단합니다 생성자에 두 번째 매개 변수로
패스 true합니다.

당신은 너무 같은 데이터를 읽어 ScannerString의 ArrayList를 사용할 수
+0

파일에 쓰는 데 문제가 없습니다. 문제는 새로운 환경 설정을 쓸 때 파일의 다른 모든 것을 덮어 쓰는 것입니다. 나는 그 밖의 모든 것을 삭제하지 않고 뭔가를 추가 할 수 없습니다. –

+0

어떻게 파일을 열 수 있습니까? –

+0

@ Robert Koch가 말했듯이 PrintWriter를 사용하지 마십시오. 대신 FileWriter를 사용하고 추가 모드를 사용하여 만듭니다. – FredK

0

:

그런 다음, ArrayList에있는 add() 방법을 사용하여과 같이 목록에 물건을 추가 할 수
import java.util.*; 
Scanner in = new Scanner(new File("chatbotPreferences.txt")); 
List<String> things = new ArrayList<String>(); 
while (in.hasNext()) 
    things.add(in.nextLine()); 
in.close(); 

:

things.add("cake=true"); 

마지막으로, 저장해야 할 때 목록에서 모든 것을 읽으십시오. 이 저장하는 다양한 방법이 있습니다 (그리고 당신이 이미 이런 짓을 것 같은 소리), 그러나 여기 예입니다 : 당신이 FILEWRITE 생성자에 충실 추가 할 필요가 위에서 언급 한

import java.io.*; 
try { 
    PrintWriter writer = new PrintWriter("chatbotPreferences.txt"); 
    for (String s : things) 
     writer.println(s); 
    writer.close(); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
+0

OK! 도와 주셔서 감사합니다. 나는 내가 여기서 알아낼 수 있다고 생각한다. : D –

+1

귀하의 질문에 답변이 있으면 답변을 수락 해주십시오. –

0

처럼. 작동중인 모습을 보여주는 예가 아래와 같습니다. 이 코드를 두 번 이상 실행하면 덮어 쓰지 않는 텍스트가 추가됩니다.

import java.io.*; 
public class FileWriting{ 
    public static void main(String[] args)throws Exception{ 
    FileWriter fw= new FileWriter("test.txt",true); //by adding true you can add to a pre-existing file 
    PrintWriter pw= new PrintWriter(fw); 
    pw.println("line 1"); 
    pw.println("line 2"); 
    pw.println("line 3"); 
    pw.println("line 4"); 
    pw.close(); 

    FileReader fr= new FileReader("test.txt"); 
    BufferedReader br= new BufferedReader(fr); 
    String x; 
    do{ 
     x= br.readLine(); 
     System.out.println(x); 
    }while(x!=null); 
    br.close(); 

    } 
} 
관련 문제