问题描述
我想问下,为什么java里面要有标准IO流,有了字节流和字符流,不就可以了吗。为什么啊,我晕。 问题补充:blessed24 写道
解决方案
标准IO指计算机的的输入设备和输出设备,搞这些的吧,为了兼容不同系统,不同物理设备的输入与输出!
解决方案二:
引用是不是说,只有标准Io实现了跨平台,其他的流都不是跨平台的?标准IO 一般所有的操作系统都是一样的。。。windows要遵循,linux也一样吧。。。。
解决方案三:
引用inpublic static final InputStream in“标准”输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。 outpublic static final PrintStream out“标准”输出流。此流已打开并准备接受输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。 引用errpublic static final PrintStream err“标准”错误输出流。此流已打开并准备接受输出数据。 通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量 out 的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。
解决方案四:
DataOutputStream本来就是用来写二进制数据的,你直接打开test.txt看到的是乱码,你用DataInputStream按你写的顺序读进来看就对了。也就是说DataOutputStream是与DataInputStream对应的。DataOutputStream,对各个基本数据类型以及String 对象进行格式化,并将其置入一个数据“流”中,以便任何机器上的DataInputStream 都能正常地读取它们。若想进行一些真正的格式化输出,比如输出到控制台,请使用PrintStream。利用它可以打印出所有基本数据类型以及String 对象,并可采用一种易于查看的格式。这与DataOutputStream 正好相反,后者的目标是将那些数据置入一个数据流中,以便DataInputStream 能够方便地重新构造它们。System.out 静态对象是一个PrintStream。PrintStream 内两个重要的方法是print()和println()。它们已进行了覆盖处理,可打印出所有数据类型。
解决方案五:
引用为什么java中有标准输入输出流这个概念?它存在的原因(意义)是什么?标准输入输出流是一种标准,不单单java有,C C++都有标准输入输出流,只不过java语言设计也要符合这种标准设计。。。。。这个概念不是java创造出来的
解决方案六:
引用但是还是像我最初问的,为什么java中有标准输入输出流这个概念?它存在的原因(意义)是什么?无论外层怎么封装,只是在简化,在提高效率,在增加样式形式,而最终都要使用标准的IO进行IO的读写操作,因为最终要通过IO的形式写入硬盘,不管什么语言什么方式,对磁盘访问的方式底层是一致的。
解决方案七:
PrintStream可以自动进行字符转换的动作,可以将基本数据类型的数据格式化成字符串输出,默认会使用操作系统的编码来处理对应的字符转换动作。当然你也可以使用PrintStream(OutputStream out, boolean autoFlush, String encoding)这个构造函数来制定你需要的编码。DataOutputStream 是将数据,无论什么类型,都是通过二进制形式存储起来。虽然同为字节流,这只能证明读取和写入的时候通过一个一个字节来分,但是写入文件时使用什么形式是根据他们本身来定义的。 DataOutputStream写入一个字节时,使用01 的形式写入。 PrintStream将一个字节 根据当前默认的字符编码写入到文件,比如 a 字符是一个两个字节,它写入之前先解析成a来写入文件,并不是一下子只写一个字节。
解决方案八:
java IO流 字节流与字符流比较,区别首先看字节流: BufferedInputStream bis = new BufferedInputStream(new FileInputStream("d://bat.txt")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d://batbat.txt")); int b = 0; while((b = bis.read()) != -1){ bos.write(b); } System.out.println("文件写入成功"); bis.close(); bos.close();再来看字符流: BufferedReader br = new BufferedReader(new FileReader("d://bat.txt")); BufferedWriter bw = new BufferedWriter(new FileWriter("d://batbat.txt")); String str = null; while((str=br.readLine())!= null){ bw.write(str); bw.newLine(); //读取完一行换行 } System.out.println("字符流文件写入成功"); br.close(); bw.close();io流中的字节流,就是传输数据的时候,一个一个字节的传输,字符流,就是以一个字符来传输。我们知道字符的长度,是字节长度的两倍。而且中文是用字符来表示的,这时候把中文这种一个字符表示的数据,用字节,分成两次来传输就会出现问题,常见的是中文显示为问号。编程时常是 用包装后的 bufferedReader 和 BufferedWriter,和 PrinterWriter因为带有缓冲区,可以减少硬盘读写次数,保护硬盘
解决方案:
Java流包括字节流和字符流,字节流通过IO设备以字节数据的方式读入,而字符流则是通过字节流读入数据转化成字符“流”的形式由用户驱使。 流可以通过包装进行功能上的扩充,比如说BufferedStream,可以缓冲流,提高读取的性能,其实在Java中都是以这种操作IO的。 但是我们不能把BufferedStream当成是实际可用的流,其实它们必须包装一个代表真实的IO设备的流才能操作,比如说System.in和System.out,或者是数组和字符串(另一种包装的流)。比如说InputStream可以这样用:InputStream in = new BufferedInputStream(new BufferedInputStream(System.in));而字符流呢? 其实字符流没有实际的形式,只能是通过包装一些特别的输入流才能进行字符操作,比如说包装字节流InputStream:Reader reader = new InputStreamReader(System.in);再比如说包装字符数组:char[] in = new char[1024];Reader reader = new CharArrayReader(in);了解这些后,就能明白流的操作规律了。
解决方案:
这是同个概念啊,大哥
解决方案:
=。=概以为标准流就是字节流和字符流。。。。或者再加上System.in System.out System.err
解决方案:
标准IO流不就是包括字节流和字符流吗?概念没搞清楚吧