我曾经是一名程序员。在c中,如果我想从std io传输二进制数据(不仅仅是文本文件),我可以一遍又一遍地调用getchar()
和putchar()
,直到达到EOF
。
我的问题是,在Java中可以采用相同的方式吗?我可以反复拨打readline()
和writeline()
吗?如果没有,我该怎么办?
谢谢!
答案 0 :(得分:5)
不,您绝对不使用readLine()
和writeLine()
来电。这些是 text 数据。如果您要传输二进制数据,则应该使用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);
}
}