0

Javaコードのファイルにデータを追加したい。

私のファイルには次のデータが含まれています。

#JSGF V1.0;

/**
 * JSGF Grammar for Hello World example
 */

grammar hello;

public <greet> = (ANKIT)|(BHAVIK)|(MONIL)|(JAY)|(HIREN)|(KRUTIKA)|(RIKIN)|(YAGNESH)|(KRISHNA);

そして、ファイルを追加するたびに、そのデータが文字の前に来るようにし;たい

したがって、JAYA を追加すると、次のように追加されます。

public <greet> = (ANKIT)|(BHAVIK)|(MONIL)|(JAY)|(HIREN)|(KRUTIKA)|(RIKIN)|(YAGNESH)|(KRISHNA)|(JAYA);

このための適切な提案またはサンプルコードを教えてください。

私は次のようにこの種のものを達成するためにこのようにしました..

{ File f = new File("E:\NEw_Workspace\Voice_recognition_modify\src\edu\cmu\sphinx\demo\helloworld\hello.gram"); を試してください。RandomAccessFile raf = new RandomAccessFile(f, "rw");

                    // Read a character
                   // char ch = raf.readChar();

                    // Seek to end of file
                    raf.seek((f.length())-1);

                    // Append to the end
                    raf.writeChars("|(ASHISH);");
                    raf.close();
                } catch (IOException e) {
                }

しかし、私は次のような出力ファイルを取得しています:

4

2 に答える 2

1

FileReader/FileWriter の組み合わせを使用できます。

各行を読み、最後の文字が ; かどうかを確認します。その場合は、この前に入力を挿入してください。Apache ライブラリには、別の文字列の中に文字列を挿入する方法があると思います。または、自分でメソッドを作成することもできます

または、RandomAccessFile を使用してファイルを rw モードで開くこともできます。次に、既存のファイルを修正できます。readLine() を呼び出して ; をチェックする同じプロセスを使用できます。RandomAccessFile の使用例はこちら

ただし、1 つの質問 - で終わる行は 1 つしかありません。

大まかなテストされていないコードで

BufferedReader in = new BufferedReader(new FileReader("/tmp/fileIn"));
String str;
while ((str = in.readLine()) != null) {
    BufferedWriter out = new BufferedWriter(new FileWriter("/tmp/fileOut"));
    if (str.endsWith(";") { 
        //insert the variable before the ; here
    }
    out.write(str);
    out.close();
}
in.close();

私の記憶は RandmonAccessFile ではあまり良くありませんが、上記は大まかに動作するはずですが、 ; は常に最後の文字です

于 2012-08-31T09:55:11.680 に答える
0

私は次のコードでそれを行いました..成功しました。

               File f = new File("E:\\NEw_Workspace\\Voice_recognition_modify\\src\\edu\\cmu\\sphinx\\demo\\helloworld\\hello.gram");
                    RandomAccessFile raf = new RandomAccessFile(f, "rw");

                    // Read a character
                   // char ch = raf.readChar();

                    // Seek to end of file
                    raf.seek((f.length())-1);

                    // Append to the end
                    raf.write(("|(KARAN);").getBytes());

                    raf.close();
                } catch (IOException e) {
                } 
于 2012-09-01T04:56:57.783 に答える