4

我必须在一个 4bytes 的文件中写入一个小端(java 使用大端)表示整数的文件,因为外部 c++ 应用程序必须读取这个文件。我的代码没有在 te 文件中写入任何内容,但 de 缓冲区中有数据。为什么?我的功能:

public static void copy(String fileOutName, boolean append){
    File fileOut = new File (fileOutName);

    try {
         FileChannel wChannel = new FileOutputStream(fileOut, append).getChannel();

         int i = 5;
         ByteBuffer bb = ByteBuffer.allocate(4);
         bb.order(ByteOrder.LITTLE_ENDIAN);
         bb.putInt(i);

         bb.flip();

         int written = wChannel.write(bb);
         System.out.println(written);    

         wChannel.close();
     } catch (IOException e) {
     }
}

我的电话:

copy("prueba.bin", false);
4

1 回答 1

6

当你不知道为什么失败时,忽略空 try-catch 块中的异常是个坏主意。

您在无法创建文件的环境中运行程序的可能性很大;但是,您给出的处理这种特殊情况的指示是什么都不做。所以,很可能你有一个程序试图运行,但由于某种原因失败了,甚至没有向你显示原因。

试试这个

public static void copy(String fileOutName, boolean append){
    File fileOut = new File (fileOutName);

    try {
         FileChannel wChannel = new FileOutputStream(fileOut, append).getChannel();

         int i = 5;
         ByteBuffer bb = ByteBuffer.allocate(4);
         bb.order(ByteOrder.LITTLE_ENDIAN);
         bb.putInt(i);

         bb.flip();

         int written = wChannel.write(bb);
         System.out.println(written);    

         wChannel.close();
     } catch (IOException e) {
// this is the new line of code
         e.printStackTrace();
     }
}

我敢打赌,你会发现为什么它不能马上工作。

于 2012-06-13T16:38:19.190 回答