在偏移之后向FileOutputStream写一个数字

时间:2014-02-25 16:36:34

标签: java offset fileoutputstream

我希望在某个偏移后写一个数字到FileOutputStream。我写的内容如下:

String t = Integer.toString(num);
output.write(t.getBytes(), OFFSET, t.length());

这是一个很好的方法,或者这有更好的方法吗?

3 个答案:

答案 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);