当前位置: 代码迷 >> 综合 >> java文件字节输出流java.io.FileOutputStream
  详细解决方案

java文件字节输出流java.io.FileOutputStream

热度:40   发布时间:2024-02-05 05:50:05.0

java.io.OutputStream

这个抽象类是表示字节输出流的所有类的超类。定义了一些共性成员方法:
—void close() 关闭此输出流并释放与此流相关联的任何系统资源。
—void flush() 刷新此输出流并强制任何缓冲的输出字节被写出。
—void write(byte[] b) 将 b.length字节从指定的字节数组写入此输出流。
*一次写入多个字节:
*如果写的第一个字节是正数(0-127),会查询ASCII表
*如果写入的第一个字节是负数,那么第一个字节会和第二个字节组成中文显示,会查询系统默认码表(GBK)
—void write(byte[] b, int off, int len) 从指定的字节数组写入 len个字节,从偏移 off开始输出到此输出流。
*int off 指定开始索引
*int len 指定写入的字符个数
—abstract void write(int b) 将指定的字节写入此输出流。
*一次只能写入一个字节

java.io.FileOutputStream

java.io.FileOutputStream 实现了java.io.OutputStream接口,
*该类的作用是把内存中的数据写入到文件中(即硬盘中)。

构造方法

FileOutputStream(File file) 创建文件输出流以写入由指定的 File对象表示的文件。
FileOutputStream(String name) 创建文件输出流以指定的名称写入文件。
*两个构造方法中的参数都是写入数据的目的地,
*File file是指写入数据目的地是一个File对象
*String name是指写入数据的目的地是一个字符串路径
注:这两个构造方法的FileOutputStream是采用覆盖方式写入,当文件不存在时创建文件,当文件存在时覆盖文件。当目录路径错误时抛出异常。

追加写/续写 使用两个参数的构造方法
—FileOutputStream(File file, boolean append) 创建文件输出流以写入由指定的 File对象表示的文件。
—FileOutputStream(String name, boolean append) 创建文件输出流以指定的名称写入文件。
*File file,String name写入目的地
*boolean append 追加写开关,如果为true,表示追加写入,继续在文件末尾写入数据,如果为false 创建新文件覆盖原文件。

构造方法的作用:
1.创建一个FileOutputStream对象
2.根据传递的文件/文件夹路径,创建一个空文件
3.会把创建好的FileOutputStream对象指向创建好的文件
写入数据的原理 :内存->硬盘
*java程序–> JVM --> OS --> OS调用写数据的方法,将数据写入到文件中

测试方法:

	private static void text1(){FileOutputStream fos = null;try {fos = new FileOutputStream("a.txt");} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}try {fos.write(97);//abstract void write(int b) } catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}byte[] bytes= {66,67,68,69};try {fos.write(bytes);//void write(byte[] b) } catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}try {fos.write(bytes,1,2);//void write(byte[] b, int off, int len) } catch (IOException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}
  相关解决方案