0

私はJavaを学び始めたばかりで、テキストファイルを更新する方法の例を見つけましたが、それを操作してテキストファイル内の要素を区切り記号で更新する方法についてのガイダンスが必要です. たとえば、address2 を新しいアドレスで編集したい場合

ログイン、名前、住所、連絡先

ログイン1、名前1、アドレス1、連絡先1

login2,name2,address2,contact2

File f=new File("appendOldFile.txt");

        FileInputStream fs = null;
        InputStreamReader in = null;
        BufferedReader br = null;

        StringBuffer sb = new StringBuffer();

        String textinLine;

        try {
             fs = new FileInputStream(f);
             in = new InputStreamReader(fs);
             br = new BufferedReader(in);

            while(true)
            {
                textinLine=br.readLine();
                if(textinLine==null)
                    break;
                sb.append(textinLine);
            }
              String textToEdit1 = "abc";
              int cnt1 = sb.indexOf(textToEdit1);
              sb.replace(cnt1,cnt1+textToEdit1.length(),"New Append text");

              String textToEdit2 = "xyz";
              int cnt2 = sb.indexOf(textToEdit2);
              sb.replace(cnt2,cnt2+textToEdit2.length(),"Second new edit text");

              fs.close();
              in.close();
              br.close();

            } catch (FileNotFoundException e) {
              e.printStackTrace();
            } catch (IOException e) {
              e.printStackTrace();
            }
4

2 に答える 2

1

通常、既存のテキスト ファイルは変更しません。それを読み込んで、テキストを変更してから、書き直します。これは、テキスト ファイルには固定サイズのレコード (行など) がないためです。したがって、通常、変更には、挿入/削除された量のテキストによって変更された場所が移動した後のすべてが含まれます。一般に、ファイル システムはファイルの途中での挿入/削除をサポートしていません。したがって、テキスト ファイルはファイルとして変更されるのではなく、変更が完了すると書き直されます。

プログラムでこれを行うには、2 つの基本的な方法があります。テキスト ファイルを 1 つのテキスト文字列として、または文字列のリストとして、テキスト ファイルの各行に 1 つの文字列として読み込むことができます。次に、これらの文字列を変更して書き戻すことができます。これが最初のステップとしてお勧めすることです。ファイル int a の行を読み取りArrayList<String>、そのリストを操作してから、変更を保存したいときに文字列をファイルに書き込みます。

addressまたは、テキスト ファイル データを実際に解析して、 、 などのフィールドを持つ Java オブジェクトをname作成することもできます。次に、このデータをプログラム内のデータとして変更し、基本的にこのデータから新しいファイルを作成します。

プログラム内のテキスト ファイルの内容とオブジェクトの間に明確な 1:1 の関係がある場合、たとえば、各行がその行からのすべてのデータを含む 1 つのオブジェクトになり、次に、オブジェクトのすべてのデータが書き込まれると、1 行として書き込まれます。これは「シリアライゼーション」と呼ばれます。オブジェクトをバイトのチャンク (人間が読めるテキストである必要はありませんが、可能です) との間で変換し、ファイルへの保存やネットワーク接続を介した転送に適しています。ただし、この場合、「シリアライゼーション」はかなり高度な概念であるため、おそらく忘れて、Java をさらに学習した後で再び使用することができます。

于 2013-04-28T09:25:55.693 に答える