java中用字节流输出流写数字和输出流输入流关闭的问题
代码如下:publicclassOutputStreamDemo{publicstaticvoidmain(String[]args)throwsIOException{...
代码如下:
public class OutputStreamDemo {
public static void main(String[] args) throws IOException{
BufferedOutputStream bos = new BufferedOutputStream(System.out);
bos.write(49); //为什么写出的是1?而不是49?
bos.close();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c:/abc.txt"));
byte[] bt = new byte[1024];
int len = bis.read(bt); //为什么先关闭了输出流,输入流的读取也不读取了?
System.out.println(new String(bt, 0, len));
bis.close();
}
}
两个问题:
第一:为什么用字节流写入49最后也是1呢?字符流是查码表转为字符,所以字符流是写出1。但是字节流不是写的字节么,传入参数的最低8位,49的最低8位仍然是49啊,不明白为什么字节流也转为字符。
第二:为什么先关闭了输出流后,输入流也不执行了?没有读取的数据,这是为什么? 展开
public class OutputStreamDemo {
public static void main(String[] args) throws IOException{
BufferedOutputStream bos = new BufferedOutputStream(System.out);
bos.write(49); //为什么写出的是1?而不是49?
bos.close();
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("c:/abc.txt"));
byte[] bt = new byte[1024];
int len = bis.read(bt); //为什么先关闭了输出流,输入流的读取也不读取了?
System.out.println(new String(bt, 0, len));
bis.close();
}
}
两个问题:
第一:为什么用字节流写入49最后也是1呢?字符流是查码表转为字符,所以字符流是写出1。但是字节流不是写的字节么,传入参数的最低8位,49的最低8位仍然是49啊,不明白为什么字节流也转为字符。
第二:为什么先关闭了输出流后,输入流也不执行了?没有读取的数据,这是为什么? 展开
1个回答
展开全部
首先 字节流写入的不是 "49" 而是 110001==49 而显示会把他转化为字符 对应的ascii字符 '1';
其次 并不是输入流不读取了 而是读取的内容打印不了
因为bos 构造自 System.out
bos.close() 会调用 System.out.close();
既然System.out 都被关闭了 System.out.println();还会有用吗?
System.out.println("123");一样没显示
其次 并不是输入流不读取了 而是读取的内容打印不了
因为bos 构造自 System.out
bos.close() 会调用 System.out.close();
既然System.out 都被关闭了 System.out.println();还会有用吗?
System.out.println("123");一样没显示
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询