我必须写一个4bytes的文件来表示一个小端的整数(java使用big endian),因为外部c ++应用程序必须读取这个文件。我的代码不在te文件中写任何东西,但de buffer里面有数据。为什么? 我的功能:
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);
答案 0 :(得分: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();
}
}
我打赌你会发现为什么它不会马上起作用。