OutputStream:是所有字节输出流的父类,其作用是:用这个流把网络数据(getOutputStream()),或者内存中的字节数组数据写到文件系统中文件系统(FileOutputStream)

   由与  public abstract class OutputStream implements Closeable, Flushable{},所以此类不可以直接实例化,只能实例化它的子类:ByteArrayOutputStreamFileOutputStreamFilterOutputStreamObjectOutputStream等.

   故对OutputStream的操作实际是对其直接子类或者间接子类的操作

以FileOutputStream为例:class FileOutputStream extends OutputStream{.....}

构造描述:输出流对象的创建

  public FileOututStream(File file) :     创建一个向指定File对象写入数据的文件输出流

  public FileOututStream(File file,boolean append) :    创建一个向指定File对象写入数据的文件输出流, append等于true,以追加内容的方式

  public FileOututStream(FileDescriptos fdObj) :创建一个向指定文件描述符处写入数据的文件输出流,该描述符表示一个到文件系统中的某个实际文件的现有链接

public FileOUTputStream(String name)  : 创建一个向指定的名称文件中写入数据的文件输出流

   public FileOUTputStream(String name,boolean append)  : 创建一个向指定的名称文件中写入数据的文件输出流,append等于true,以追加内容的方式

  实际上只有一个构造方法,那就是public FileOututStream(File file,boolean append),原因看源码,如下

public FileOututStream(String name,boolean append){

    this(name != null?new File(name) :null,append);

}

  public FileOututStream(File file,append){

    this(file,append);

}

方法描述:

  public void close():关闭这个流 并且释放这个流所有相关的资源
  public void flush(): 刷新此输出流并强制写出任何已缓冲的字节,
  public abstract void write(int b):将一个字节写入呲溜
  public void write(byte b[]):相当于write(b, 0, b.length),将特定的字节数组数据写到这个流中  ublic void write(byte b[], int off, int len):将字节数组中指定的区间的字节数据写进此流中
  
  实际上只有一个写方法,那就是public void write(int b),原因看源码,如下
 
  public void write(byte b[]) throws IOException {
      write(b, 0, b.length);
}
  所以 public void write(byte b[])相当于 public void write(byte b[],int off ,int len),而write(byte b[], int off, int len)源码如下
 public void write(byte b[], int off, int len) throws IOException {
     if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
for (int i = 0 ; i < len ; i++) {
write(b[off + i]);
}
}
所以 public void write(byte b[],int off,int len)相当于 public void write(int b)
总之:写方法其实只有一个,那就是write(int b),其余方法都是系统对这个方式的封装
 

   
  

使用示例:

  FileOututStream out = new FileOututStream("D://e.txt");        创建文件输出流对象

  int acc_str = 97;

  out .write(acc_str );       // 方式1:write(int i)       -》    将a写到此流中

  out .write("I like java".getBytes());          //方式2: write(byte[] b)

  byte[] b  = new byte[] {97,98,99,100,101,102};

  out .write(b,0,2);          // 方式3: write(byte[] b,int start,int num)

  out .flush();          //将缓存中的数据强制写出到此流

  out.close();   //关闭此流

  

  

最新文章

  1. Windows下的Memcache安装
  2. linux bash &amp; profile &amp;bash_profile 小结
  3. Remoting首次用时偏长问题
  4. HDOJ 2095
  5. spring实战四之Bean的自动装配(注解方式)
  6. GridView九宫图
  7. Android 之 权限 uses-permission 设置
  8. SSH框架应用中常用Jar包用途介绍
  9. &#39;dependencies.dependency.(groupId:artifactId:type:classifier)&#39; must be unique
  10. PDF在线预览
  11. Maven内置隐式变量
  12. su Authentication failure解决
  13. 动态规划——Best Time to Buy and Sell Stock III
  14. [LeetCode] Goat Latin 山羊拉丁文
  15. DEV GridControl/TreeList 中ShowingEditor使用
  16. 【BZOJ2144】Throw 数论
  17. visual studio code运行时报错,无法将“cnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称,Cannot find module &#39;webpack&#39;
  18. git安装项目步骤
  19. day30(对象转json(java))
  20. log4j 相对路径

热门文章

  1. C++教程之初识编程
  2. 《HelloGitHub》第 37 期
  3. 创建一个 Spring Boot 项目,你会几种方法?
  4. MTCNN算法与代码理解—人脸检测和人脸对齐联合学习
  5. Gradle中的闭包
  6. C++删除文件末尾字符
  7. 设计模式之面向切面编程AOP
  8. 5G 时代,可能是什么样呢?
  9. Changes of user relationship in AD can&#39;t be correctly synchronized to SCSM
  10. Spring IOC源码实现流程