2012-09-05 11 views
0

그래서 저는 텍스트 편집기를 설계하고 있습니다. Open/Save 메소드의 경우, TextArea를 사용하려고합니다 (하나 일 필요는 없으며, 현재의 방법입니다). 이제는 두 가지 문제가 있습니다.TextArea - 모든 텍스트를 가져 오는 방법은 무엇입니까?

1) 파일을로드 할 때 현재 현재 텍스트 편집기에있는 내용이 제거되지 않습니다. 예를 들어, "Owl"을 입력하고 "Rat"이 포함 된 파일을로드하면 "OwlRat"이됩니다. 이 문제를 해결하기 위해 replaceRange 메서드를 사용할 계획입니다. (다시 말하지만 절대적이지는 않습니다. 어떤 제안이라도 좋습니다!). 그러나 선택한 텍스트뿐만 아니라 텍스트 편집기의 모든 내용을 대체해야하며이를 수행하는 방법을 알 수 없습니다. 어떤 팁?

2) 현재 파일을로드 할 때 응용 프로그램을 실행할 때 파일을 저장하지 않으면 아무 일도 일어나지 않습니다. 예를 들어, 프로그램 실행, 파일 저장, 프로그램 닫기, 프로그램 실행, 파일로드 등은 아무 것도하지 않습니다. String x가 이월되지 않기 때문에 이것이 알지만, 어쨌든 그것을 고칠 생각은 없습니다. 누군가 벡터를 제안,하지만 난 여기에

열기/저장 방법에 대한 코드입니다 ... 그들이 도움이 표시되지 않습니다 :

public void Open(String name){  
    File textFile = new File(name + ".txt."); 
     BufferedReader reader = null; 
     try 
     { 
     textArea.append(x); 
     reader = new BufferedReader(new FileReader(textFile)); 
     reader.read(); 
    } 
     catch (IOException e) 
     { 
    } 
     finally 
    { 
     try 
      { 
      if (reader != null) 
       reader.close(); 
     } 
     catch (IOException e) 
     {      
     } 
    } 
} 

저장 :

열기

public void Save(String name){ 
File textFile = new File(name + ".txt"); 
BufferedWriter writer = null; 
try 
{ 
    writer = new BufferedWriter(new FileWriter(textFile)); 
    writer.write(name); 
    x = textArea.getText(); 

} 
catch (IOException e) 
{ 
} 
finally 
{ 
    try 
    { 
      if (writer != null) 
        writer.close(); 
    } 
    catch (IOException e) 
    { 
    } 
} 
} 
+2

예외를 기록하는 방법. 'x'는 무엇입니까? –

+0

1) 코드 블록에 일관성 있고 논리적 인 들여 쓰기를 사용하십시오. 2) "catch"마다 e.printStackTrace();를 추가하십시오. 3) 일반적인 [Java 명명 규칙] (http://java.sun.com/docs/books/jls/second_edition/html/names)을 배우십시오. doc.html # 73307) (특히 이름에 사용 된 사례)을 클래스, 메소드 및 속성 이름에 사용하고 일관되게 사용하십시오. –

+0

['JTextComponent.read (Reader, Object)'] 사용 (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#read%28java.io)을 고려하십시오. Reader, % 20java.lang.Object % 29) & ['write (Writer)'] (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#write % 28java.io.Writer % 29). 더 강력합니다. –

답변

0

는 ... 여기에 무슨 많이있다

  1. 'x'는 무엇입니까 (힌트 : 파일의 내용이 아닙니다!), 왜 텍스트 영역에 추가합니까?
  2. BufferedReader.read()는 예상 한 것과 다를 수있는 한 문자를 반환합니다. readline()을 반복 해 봅니다.
  3. Dave Newton의 조언에 따라 예외를 처리하고 변수에 대한 더 나은 이름을 제공하십시오.
  4. 텍스트 파일은 프로그램을 여러 번 호출 할 때까지 유지되므로 데이터가 부족해도 아무 관계가 없습니다.

행운을 빈다.

0

추가하지 말고 textArea.setText(TEXT);을 사용하십시오. append는에 추가하는 것을 의미하므로 TextArea에 텍스트를 추가 할 때 TextArea에 텍스트를 추가합니다. 반면에 setText는 텍스트를 설정하여 이전 텍스트를 새 텍스트로 대체합니다 (원하는 텍스트).

읽기가 실패한 이유는 정확하게 읽지 못하는 것입니다. 우선, .read()은 단지 하나의 문자를 읽습니다 (원하는 것은 아님). 둘째, 반환 된 결과에 대해서는 아무 것도하지 않는 것입니다. 파일을 올바르게 읽는 방법을 찾으려면 (here과 같은) 어딘가로 이동 한 다음 반환 된 문자열을 받아 textArea.setText(readString);을 수행하십시오.

다른 사람들과 마찬가지로, 모든 catch 블록에서 e.printStackTrace();을 사용하면 실제로 콘솔에 오류가 표시됩니다.

1

많은 문제와 연구 끝에 해결책을 찾은 나의 친구 친구와 같은 문제가있었습니다.

ArrayList를 사용하면 TextArea의 모든 내용을 저장하고 보내기를 호출하여 매개 변수로 보내기가 가능합니다. 작성자가 문자열 줄을 작성한 후 "for"행을 사용하여 ArrayList를 우리는 txt 파일에 TextArea 내용을 끝낼 것입니다. 뭔가 이해가되지 않는다면, 유감스럽게도 영어 통역사와 나는 영어를 못해.

Windows 메모장을 보면 항상 선을 넘기지 않고 모두 한 줄로 표시하고 워드 패드를 사용합니다.


개인 무효 SaveActionPerformed (java.awt.event.ActionEvent의의 EVT) {

String NameFile = Name.getText(); 
    ArrayList<String> Text = new ArrayList<String>(); 

    Text.add(TextArea.getText()); 

    SaveFile(NameFile, Text); 
} 

공공 무효 SaveFile 값

(문자열 이름, ArrayList를 < 문자열> 메시지) {

path = "C:\\Users\\Paulo Brito\\Desktop\\" + name + ".txt"; 

    File file1 = new File(path); 

    try { 

     if (!file1.exists()) { 

      file1.createNewFile(); 
     } 


     File[] files = file1.listFiles(); 


     FileWriter fw = new FileWriter(file1, true); 

     BufferedWriter bw = new BufferedWriter(fw); 

     for (int i = 0; i < message.size(); i++) { 

      bw.write(message.get(i)); 
      bw.newLine(); 
     } 

     bw.close(); 
     fw.close(); 

     FileReader fr = new FileReader(file1); 

     BufferedReader br = new BufferedReader(fr); 

     fw = new FileWriter(file1, true); 

     bw = new BufferedWriter(fw); 

     while (br.ready()) { 

      String line = br.readLine(); 

      System.out.println(line); 

      bw.write(line); 
      bw.newLine(); 

     } 
     br.close(); 
     fr.close(); 

    } catch (IOException ex) { 
     ex.printStackTrace(); 
     JOptionPane.showMessageDialog(null, "Error in" + ex);   
} 
관련 문제