【问题标题】:I want To append Some data in the File at specific location With the java Code我想用java代码在文件中的特定位置附加一些数据
【发布时间】:2012-08-26 02:51:19
【问题描述】:

我想在文件中附加一些数据的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);

请给我一些适当的建议或示例代码。

我做了这样的事情来实现如下的这种东西..

试试{ 文件 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 "然后是一些正方形的图像" 等等

【问题讨论】:

  • 看来您想用您想要的文本替换第二个;之后出现的行。或者您想在最后一个 ; 之前附加 |(word)。你能澄清一下吗?
  • 这不是一个明确的问题。请在stackoverflow家伙删除它之前进行更多描述! ;)
  • 我想在第二个之后附加 |(word) ;并且每次都应该在第二个之前附加;

标签: java file-io append read-write


【解决方案1】:

您可以使用 FileReader/FileWriter 组合。

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

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

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

粗略的未经测试的代码

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 会更干净,如果 ;总是最后一个字符

【讨论】:

  • 是的..应该有一行以 ;...结尾的 owlays 你能不能给我一些示例代码...?
  • 查看更新以回答。它未经测试,但应该让你更接近
  • 我不想删除任何东西 ..它只是删除 ma 数据,我必须在第二次之前附加字符串“;”不是在第一次出现“;”之前
  • 那么是一两个吗?你的两个 cmets 说的不一样
【解决方案2】:

我已经用下面的代码做到了..成功了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2011-08-24
    • 2022-11-15
    • 2013-02-09
    • 2020-09-05
    • 2021-06-07
    • 1970-01-01
    相关资源
    最近更新 更多