我有一个文本文件,我想用Java编辑.它有成千上万行.我基本上想要遍历这些行并更改/编辑/删除一些文本.这需要经常发生.
从我在其他网站上看到的解决方案来看,一般方法似乎是:
这个解决方案对我来说似乎有点"hacky",特别是如果我的文本文件中有数千行.
有人知道更好的解决方案吗?
And*_*kov 30
我最近没有用Java做过这个,但是将整个文件写入内存似乎是一个坏主意.
我能想出的最好的想法是同时以书写模式打开一个临时文件,对于每一行,读取它,必要时进行修改,然后写入临时文件.最后,删除原始文件并重命名临时文件.
如果您对文件系统具有修改权限,则可能还具有删除和重命名权限.
如果文件只有几千行,你应该能够在一次读取中读取整个文件并将其转换为String.
您可以使用具有以下方法的apache IOUtils.
public static String readFile(String filename) throws IOException {
File file = new File(filename);
int len = (int) file.length();
byte[] bytes = new byte[len];
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
assert len == fis.read(bytes);
} catch (IOException e) {
close(fis);
throw e;
}
return new String(bytes, "UTF-8");
}
public static void writeFile(String filename, String text) throws IOException {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(filename);
fos.write(text.getBytes("UTF-8"));
} catch (IOException e) {
close(fos);
throw e;
}
}
public static void close(Closeable closeable) {
try {
closeable.close();
} catch(IOException ignored) {
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
86351 次 |
最近记录: |