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

但我得到了一个输出文件,如下所示:“A”然后是一些方形框图像“然后是 S”然后是一些方形框图像”等等

4

2 回答 2

1

您可以使用 FileReader/FileWriter 组合。

读取每一行,然后检查最后一个字符是否为 ;。如果是,则在此之前插入您的输入;我认为 apache 库有一种方法可以在另一个字符串中插入字符串。或者你可以自己写一个方法

或者您可以使用 RandomAccessFile 并以 rw 模式打开文件。然后您可以修改现有文件。您可以使用调用 readLine() 并检查 ; 的相同过程。使用 RandomAccessFile 的示例在这里

但是有一个问题 - 是否只有一行以 ; 结尾

在未经测试的粗略代码中

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 的记忆不太好,但上面应该可以大致工作,尽管 RandomAccessFile 会更干净;总是最后一个字符

于 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 回答