可能重复:
使用Java读取结构化二进制文件的最佳方法
我曾经是交流程序员.在c中,如果我想从std io传输二进制数据(不仅仅是文本文件),我可以通过调用getchar()并putchar()反复进行,直到达到EOF.我的问题是,在Java中可以采用相同的方式吗?我可以叫readline()和writeline()了一遍又一遍?如果没有,我该怎么办?
谢谢!
不,你绝对不应该使用readLine()和writeLine()调用任何东西.这些是用于文本数据.如果您要转移的二进制数据,你应该使用InputStream和OutputStream-只能自认倒霉Reader或Writer在名称中.如果将二进制数据转换为文本,则几乎可以保证丢失数据.
但是,您可以一次只复制数据块:
public static void copy(InputStream input, OutputStream output)
throws IOException {
byte[] buffer = new byte[16 * 1024]; // For example...
int bytesRead;
while ((bytesRead = input.read(buffer)) > 0) {
output.write(buffer, 0, bytesRead);
}
}
Run Code Online (Sandbox Code Playgroud)