【发布时间】:2014-02-25 16:36:33
【问题描述】:
我想在某个偏移量后向FileOutputStream 写入一个数字。我写的内容如下:
String t = Integer.toString(num);
output.write(t.getBytes(), OFFSET, t.length());
这是一个好方法,还是有更好的方法?
【问题讨论】:
标签: java offset fileoutputstream
我想在某个偏移量后向FileOutputStream 写入一个数字。我写的内容如下:
String t = Integer.toString(num);
output.write(t.getBytes(), OFFSET, t.length());
这是一个好方法,还是有更好的方法?
【问题讨论】:
标签: java offset fileoutputstream
这是一个经典的 XY 问题。您要做的是在特定偏移量处写入 file。指定“FileOutputStream”不是问题的一部分,而是您的错误解决方案的一部分。您应该为此任务使用 RandomAccessFile。
【讨论】:
您没有正确使用FileOutputStream 类。第一个参数是要写入文件的数组。第二个是您要开始写入的数组的偏移量。第三个是你要写的内容的长度。因此,在您的情况下,如果您使用与 0 不同的偏移量,则会出现越界异常。
如果您想使用 FileOutputStream 在文件中写入该数字,您可以读取该文件(例如,使用FileInputStream),读取您想要读取的字节数并将它们写入输出流,然后用类似的东西写下那个数字:
output.write(t.getBytes(),0,t.length);
最后读取输入流的其余部分并将其写入输出流。
祝你好运。
【讨论】:
我找到了与@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);
【讨论】: