Day08 输入流 输出流

read和write方法在执行是都将阻塞,直至字节被真正的输入或者输出。这就意味着如果流不能被立即访问(通常因为网络繁忙),那么当前的线程被阻塞。其他线程失去工作机会。
我们就要用到available
byte[] data = new byte[bytesAvailable];
in.read(data);

完成输入输出流以后应该调用close方法关闭他,不然会造成资源的浪费。还可以用flush方法来人为的冲刷这些输出。

  • public void close() :关闭此输出流并释放与此流相关联的任何系统资源。 抛出IOException。
  • public void flush() :刷新此输出流并强制任何缓冲的输出字节被写出。
  • public void write(byte[] b):将 b.length字节从指定的字节数组写入此输出流。
  • public void write(byte[] b, int off, int len) :从指定的字节数组写入 len字节,从偏移量 off开始输出到此输出流。
  • public abstract void write(int b) :将指定的字节输出流。

Java家族拥有60多个流家族

OutputStream有很多子类,我们从最简单的一个子类开始。

java.io.FileOutputStream类是文件输出流,用于将数据写出到文件。

构造方法

  • public FileOutputStream(File file):创建文件输出流以写入由指定的 File对象表示的文件。
  • public FileOutputStream(String name): 创建文件输出流以指定的名称写入文件。

FileInputStream fin = new FileInputStream(“employee.dat”);
这行代码可以查看在用户目录下名为employee.dat的文件。

为了从文件中读入数字,首先需要创建一个FileInputStream,然后再传给DataInputStream的构造器。

FileOutputStream(String name)
FileOutputStream(String name,boolean append)
FileOutputStream(File file)
FileOutputStream(File file,boolean append)
创建一个新的文件输出流。如果append 参数为true,这个方法会被加到文件末尾。否则删除相同名字的已有文件。

BufferedInputStream(InputStream in)创建一个带缓冲区的输入流。带缓冲区的输入流

Reader in = new InputStreamReader(System.in);

PrintWriter out = new PrintWriter((“employee.txt”),“UTF-8”);

为了输出到打印写出器,需要使用与使用System.out时相同的print,println和printf方法。你可以用这些方法来打印数字(int, short,long,float,double ),字符,boolean值,字符串和对象。
例如,考虑下面的代码:
String name = “Harry Hacker”;
double salary = 75000;
out.print(name);
out.println(salary);

猜你喜欢

转载自blog.csdn.net/u014452148/article/details/85717626