写入文件的特定位置
我有一个由批处理脚本创建的文本文件,其中字段位置始终相同。在那个文件中,我想要去一个特定的位置并添加一个字段。写入文件的特定位置
例如,假设我的文件只有两行,并具有以下字段:
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场),并想知道是否有更简单的方法。
忘记追加到文件中间。文件是字节序列,因此,您需要先处理插入点后的所有字节,然后将它们向前移动N个字节以创建修改位置。这花费的不仅仅是处理文件,并且将新行写入另一个文件。
我可以这样做,将字段放入包含空白字段的数组并将其逐字段地分发到新文件,但这太繁琐且非常繁琐(因为它具有多于90场),并想知道是否有更简单的方法。
如果您是通过使用Java来完成的,则无法在文本之间插入数据。它只允许你追加到文件的末尾。
无论如何,如果您需要插入一个新列并保持整个数据文件的格式一致性,那么您需要为没有值的行插入空格,因此重写所有行仍是不可避免的。
我找不到任何可以去线的特定位置的文件,并写入任何实用工具类
如果你无法找到一个,你可以自己写一个。实际上并不那么单调乏味。只需自己写一个实用程序类,以便将来可以使用它。
//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
}
}
因此,我做这件事的唯一方法是阅读每行的每一列。如果我知道该列的位置,则无法访问该行的特定列 – Luffy
@Luffy否,在Java中不可能。但你可以写你自己的课程来做到这一点。在你自己的班级中,让它逐行阅读。(所有的单调乏味的东西)。但下一次你需要插入特定的位置时,它将只是一个单线的事情。 – user3437460
要谢谢你! – Luffy
为什么上游的批处理脚本不能扩充来执行此操作?这比下游实施更简单,风险更小。 – Makoto
@Makoto是的,我同意,我们确实有一个故事会在未来做到这一点,但接受这个文件的团队无法对齐。另外,我没有提及那个文件的小处理。 – Luffy
@Luffy文本文件中所有行的列数是否相同? – user3437460