小弟初学Java,下面有两个小小的问题想要请教,望各位耐心为小弟指点一二!(注:【】为有疑问的地方)File file = new File(args[0]);
BufferedInputStream bufferedInputStream =
new BufferedInputStream(
new FileInputStream(file)); // 将文件读入位元数组
ByteArrayOutputStream arrayOutputStream =
new ByteArrayOutputStream();
【byte[] bytes = new byte[1];】
while(bufferedInputStream.read(bytes) != -1) {
arrayOutputStream.write(bytes);
}
【arrayOutputStream.close();】
bufferedInputStream.close(); // 显示位元数组内容
【bytes = arrayOutputStream.toByteArray();】
【for(byte b : bytes)】 {
System.out.print((char) b);
}
问题:一,【byte[] bytes = new byte[1];】明明是定义了只有一个位元的数组,为什么这里【for(byte b : bytes)】像是已经将文件的所有内容都输入了里面?
二,【arrayOutputStream.close();】 输出流关闭之后还能进行【bytes = arrayOutputStream.toByteArray();】 这样的操作吗?
BufferedInputStream bufferedInputStream =
new BufferedInputStream(
new FileInputStream(file)); // 将文件读入位元数组
ByteArrayOutputStream arrayOutputStream =
new ByteArrayOutputStream();
【byte[] bytes = new byte[1];】
while(bufferedInputStream.read(bytes) != -1) {
arrayOutputStream.write(bytes);
}
【arrayOutputStream.close();】
bufferedInputStream.close(); // 显示位元数组内容
【bytes = arrayOutputStream.toByteArray();】
【for(byte b : bytes)】 {
System.out.print((char) b);
}
问题:一,【byte[] bytes = new byte[1];】明明是定义了只有一个位元的数组,为什么这里【for(byte b : bytes)】像是已经将文件的所有内容都输入了里面?
二,【arrayOutputStream.close();】 输出流关闭之后还能进行【bytes = arrayOutputStream.toByteArray();】 这样的操作吗?
解决方案 »
- 这个java的加密和解密那个不一样,怎么解决呀
- swing中如何屏蔽掉windows的快捷键?
- 数据库删除语句问题 求指点
- java内存分配问题
- java怎么实现p2p
- JPCAP程序执行产生错误....文件已经存在...还有错误
- 如何识别鼠标左右键同时按下?
- 求程序!!求帮助!!
- BoardLayout布局一问
- 【谁能解决谁是老大】【该程序有500行,你能解决吗?】
- 几个QQ群都不能解释的问题:自定义Exception的子类(子类继承Exception类,并未作任何修改),却不能捕捉原来Excepton能捕捉的异常,为什么?
- snmp 收集 CPU 的数据 ,我想知道CPU使用率是多少,应该选哪个
while(bufferedInputStream.read(bytes) != -1) {
arrayOutputStream.write(bytes);
}
这里是读一个写一个,所有的读完了也写完了bytes = arrayOutputStream.toByteArray();
for(byte b : bytes) {
System.out.print((char) b);
}
这里bytes被重新指向一个新数组了。