写入文件的特定位置

时间:2017-10-13 15:12:18

标签: java

我有一个文本文件,它由批处理脚本创建,其中字段位置始终相同。在该文件中,我想转到特定位置并为其添加字段。

例如,假设我的文件只有两行,并且包含以下字段:

number customer_id account_no address price plan
number customer_id account_no address price plan

我想在地址和价格之间添加一个额外字段,以便新文件看起来与此类似:

number customer_id account_no address newfield price plan
number customer_id account_no address newfield price plan

我无法找到任何Utility类,它可以转到文件中某一行的特定位置并写入。

我可以通过繁琐的方式将字段放置到包含空格的数组中并逐字段地将其吐出到新文件中,但是,这太麻烦且非常繁琐(因为它有超过90个字段)并且想知道是否有更简单的方法。

2 个答案:

答案 0 :(得分:1)

  

我可以通过繁琐的方式将字段放置到包含空格的数组中并逐字段地将其吐出到新文件中,但是,这太麻烦且非常繁琐(因为它有超过90个字段)并且想知道是否有更简单的方法。

如果您是通过使用Java来实现的,则无法在文本之间插入数据。它只允许你追加到文件的末尾。

无论如何,如果你需要插入一个新列并保持整个数据文件的格式一致性,你需要为那些没有值的行插入一个空格,因此重写所有行仍然是不可避免的。

  

我找不到任何可以转到文件中某一行的特定位置并写入文件的Utility类

如果你找不到,你可以自己写一个。实际上并不是那么单调乏味。只需自己编写一个实用程序类,以便将来可以使用它。

//A brief example..

public final class FileUtility{

    private static String filepath;

    public static void setFilePath(String filepath){
        FileUtility.filepath = filepath;
    }

    public static int searchField (String fieldname, int lineNo){
        //return position of given field namein a specific line
    }

    public static void insertDataAt (String data, int column){
        //return position of given field
    }

    public static boolean dataExist(String data, int lineNo){
        //return true if given data exist at given line number
    }
}

答案 1 :(得分:0)

忘记附加到文件的中间。文件是字节序列,因此,您需要先处理插入点之后的所有字节,然后向前移动N个字节以创建修改位置。这比花在处理文件和将新行写入另一个文件上花费更多。