我希望在某个偏移后写一个数字到FileOutputStream
。我写的内容如下:
String t = Integer.toString(num);
output.write(t.getBytes(), OFFSET, t.length());
这是一个很好的方法,或者这有更好的方法吗?
答案 0 :(得分:0)
您没有正确使用FileOutputStream课程。第一个参数是您要在文件上写入的数组。第二个是您要从中开始写入的数组的偏移量。第三个是你想写的长度。所以,在你的情况下,如果你使用一个不同于0的偏移量,你将获得一个越界异常。
如果要使用FileOutputStream在文件中写入该数字,可以读取该文件(例如,使用FileInputStream),读取要读取的字节数并将其写入输出然后使用类似于:
的内容写出该数字output.write(t.getBytes(),0,t.length);
最后读取输入流的其余部分并将其写入输出流。
祝你好运。
答案 1 :(得分:0)
这是一个经典的XY问题。您要做的是在特定偏移处写入文件。指定'FileOutputStream'不是问题的一部分,它是您错误解决方案的一部分。你应该使用RandomAccessFile来完成这项任务。
答案 2 :(得分:0)
我找到了与@sirs注释相对应的解决方案:
final RandomAccessFile raf = new RandomAccessFile(file, "rw");
raf.setLength(offset);
raf.seek(offset);
FileOutputStream fos = new FileOutputStream(raf.getFD()) {
@Override
public void close() throws IOException {
super.close();
raf.close();
}
};
fos.write(myInt);