我目前正在将阅读文件存储在List<String>
中,将我的String
添加到列表的倒数第二个位置,最后将我的列表写入原始文件。
它工作正常,因为我的文件只有20行,但我觉得这将是一个很长的过程,文件更大。
因此,我的问题是:是否有类似Append
的方法来简单地选择要追加线条的位置?
答案 0 :(得分:0)
只需打开带有附加模式的java.io.FileOutputStream,然后编写单个字符串。
使用此类的以下构造函数:
FileOutputStream(String name, boolean append)
这是为了追加到文件的末尾。
您可以使用java.io.RandomAccessFile在文件内的任何位置进行编辑。
编辑: 使用RandomAccessFile实现任务的示例代码。
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
public class InsertPenultimateLine {
private static String nl = System.getProperty("line.separator");
private static void usingRAF() throws Exception {
String fileName = "somefile.txt";
String myLine = "blah-blah-blah";
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
List<Byte> bytes = new ArrayList<Byte>();
long len = raf.length();
long index = len-1;
for(;index>0;index--) {
raf.seek(index);
byte b = raf.readByte();
if(b == 10) {
break;
}
bytes.add(0, b);
}
byte[] rawBytes = new byte[bytes.size()];
for(int j=0;j<bytes.size();j++) {
rawBytes[j] = bytes.get(j);
}
String str = new String(rawBytes);
str = myLine + nl + str;
raf.seek(index + 1);
raf.write(str.getBytes());
raf.close();
}
public static void main(String[] args) throws Exception {
usingRAF();
}
}