0

だから私はテキストエディタを設計しています。Open/Save メソッドについては、TextArea を使用しようとしています (1 つである必要はありません。現在のメソッドです)。今、私は今2つの問題を抱えています:

1) ファイルをロードしても、現在テキスト エディターにあるコンテンツは削除されません。たとえば、「Owl」と入力してから「Rat」を含むファイルをロードすると、「OwlRat」になります。これを解決するために、replaceRange メソッドを使用する予定です (繰り返しますが、これは絶対的なものではありません。何か提案があれば素晴らしいです!)。ただし、選択したテキストだけでなく、テキスト エディターのすべての内容を置き換える必要があり、その方法がわかりません。任意のヒント?

2) 現在、ファイルをロードしても、アプリケーションの実行と同時にそのファイルを保存しない限り、何も起こりません。したがって、たとえば、プログラムを実行し、ファイルを保存し、プログラムを閉じ、プログラムを再度実行してからファイルをロードしても、何も起こりません。これは、文字列 x が引き継がれないためであることはわかっていますが、とにかくそれを修正することは考えられません。誰かがベクトルを提案しましたが、それらがどのように役立つかわかりません...

Open/Save メソッドのコードは次のとおりです。

開ける:

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)   
    {   
   }   
}  
}
4

3 に答える 3

0

ここではたくさんのことが起こっています...

  1. 'x'とは何ですか(ヒント:ファイルからのものではありません!)、なぜそれをテキスト領域に追加するのですか?
  2. BufferedReader.read()は1文字を返しますが、これはおそらく期待したものではありません。readline()をループしてみてください。
  3. Dave Newtonのアドバイスに従って、例外を処理し、変数に適切な名前を付けてください。
  4. テキストファイルはプログラムを複数回呼び出しても保持されるため、データの不足はそれとは関係ありません。

幸運を。

于 2012-09-06T00:26:00.767 に答える
0

textArea.setText(TEXT);追加ではなく使用します。appendはに追加することを意味するため、TextAreaにテキストを追加するときは、そのテキストをそこに追加します。一方、setTextはテキストを設定し、古いテキストを新しいテキストに置き換えます(これは必要なものです)。

なぜそれが読めないのかという限り、あなたは正しく読んでいません。まず第一に、.read()(あなたが望むものではなく)単一の文字を読み取るだけです。第二に、返された結果に対して何もしていないようです。どこか(ここのように)に移動して、ファイルを正しく読み取る方法を見つけてから、返された文字列を取得して実行しますtextArea.setText(readString);

そして、他の人が言ったようにe.printStackTrace();、すべてのキャッチブロックで使用して、エラーが実際にコンソールに表示されるようにします。

于 2012-09-06T00:29:29.280 に答える