java 输入输出流 一个类中只能使用一次吗? 流关闭后 就不能再打开吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 输入输出流 一个类中只能使用一次吗? 流关闭后 就不能再打开吗?相关的知识,希望对你有一定的参考价值。

public class InputUserInformation /*从键盘输入,返回一个字符串*/ public String inputName () int count; byte[] b = new byte[256]; String str = ""; DataInputStream din = new DataInputStream(System.in); BufferedInputStream in = new BufferedInputStream(din); try count = in.read(b); str = new String(b,0,count); catch (IOException e) e.printStackTrace(); System.out.print("发送I/O错误!"); finally try din.close(); in.close(); catch (IOException e) e.printStackTrace(); return str; public String inputPassword () int count; byte[] b = new byte[256]; String str = ""; DataInputStream din = new DataInputStream(System.in); BufferedInputStream in = new BufferedInputStream(din); try count = in.read(b); str = new String(b,0,count); catch (IOException e) e.printStackTrace(); System.out.print("发送I/O错误!"); finally try din.close(); in.close(); catch (IOException e) e.printStackTrace(); return str;

参考技术A 那么上一级方法是不是一定不可以有输入输出流对象呢?
比如说你可以再上一级方法当中创建流然后作为参数代入到下一级去
或者上一级创建一个没有实体的输入输出流的引用,然后把引用传递到下一级方法当中去,这样就可以再上一级方法的最后关闭流了

java流

流的分类

  • 依据方向分类,分为输入流和输出流。
  • 依据读写单位,分为字符流和字节流。
  • 依据功能不同,分为节点流,处理流。

所谓的输入与输出

输入输出的参考系是程序,比如说从文件读取,这叫做输入,程序写文件,这叫输出。

节点流

字节流

字符流的单位是一个一个字节字节读取的,每一次读取一个。

字符流

字符流的单位是一个字符字符读取的,每一次读取两个字节。 二者不同的是读取单位不同。

处理流

处理流可以想象是在上述的水管中再套上一层水管。

处理流目前我应用较多的是是缓冲作用。上述中的节点流,不管是字符流还是字节流,他们读取每次读取的的字节都是少数的,这就造成一个问题,没次读取一次,需要访问一次硬盘,写一次又要访问一次硬盘,这是对硬盘的损坏。所以我们要做的就是一次读写更多的字节。我们想到的方式有两种,第一种,用一个字节数组,每次读取更多的。第二种用缓冲流,这样的话每次可以读取更多,写入的也更多,这就减少了对硬盘的访问次数。

转换流

转换流的作用是将字节流转化为字符流,这就产生一个问题,我可以直接用字符流,干吗还特地用转换流来转换字节流。这是个好问题,但是有时候,我们获取的是字节流,这时候我们不得不使用转换流来转换。

以上是关于java 输入输出流 一个类中只能使用一次吗? 流关闭后 就不能再打开吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 z/OS Assembler 中,我可以读取 JCL 输入流两次吗?

java.IO输入输出流:过滤流:buffer流和data流

JAVA基础——IO流字符流

Java IO5:字符流

深入理解JAVA I/O系列三:字符流详解

标准输入流和输出流分别是啥,高效字符流的方法