在java中传输二进制文件(数据)

时间:2013-01-14 19:51:12

标签: java c file

  

可能重复:
  Best way to read structured binary files with Java

我曾经是一名程序员。在c中,如果我想从std io传输二进制数据(不仅仅是文本文件),我可以一遍又一遍地调用getchar()putchar(),直到达到EOF 。 我的问题是,在Java中可以采用相同的方式吗?我可以反复拨打readline()writeline()吗?如果没有,我该怎么办? 谢谢!

1 个答案:

答案 0 :(得分:5)

不,您绝对使用readLine()writeLine()来电。这些是 text 数据。如果您要传输二进制数据,则应该使用InputStreamOutputStream - 名称中不包含ReaderWriter。如果将二进制数据转换为文本,几乎可以保证丢失数据。

但是,您可以一次只复制数据块:

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);
   }
}