文件字节输出流关联指定文件路径的文件,数据通过文件字节输出流以字节为单位输出并保存到文件中。文件字节输出流继承自OutputStream类,并实现OutputStream类的各种方法。
文件字节输出流的构造方法语法如下:
语法1:以File对象为参数创建FileOutputStream实例
new FileOutputStream(File file)1语法2:以文件对象的绝对路径为参数创建FIleOutputStream实例
new FileOutputStream(String filepath) 呃,时隔几年,不知道你解决问题没有。首先应该明白,System.out.println(OBJ)会自动调用OBJ.toString()方法。查阅官方文档表示,ByteArrayInputStream类中重写了toString( )方法,Converts the buffer's contents into a string decoding bytes using the platform's default character set.即 “使用平台的默认字符集将缓冲区的内容转换为字符串解码字节。但是 FileOutputStream类中并未重写toString( ) 。使用的是从Object类中继承下来的。所以你能看到 obj@xxx 格式的输出。
FileOutputStream文件字节输出流
FileOutputStream的构造方法
FileOutputStream(File f)
打开指定File对象描述的文件的输出流,进行写操作
如下:
import java.io.File
import java.io.FileNotFoundException
import java.io.FileOutputStream
import java.io.IOException
/**
* 用于向文件中写数据的输出流
* FileOutputStream
* @author Administrator
*
*/
public class FileOutputStreamDemo {
public static void main(String[] args) throws FileNotFoundException {
/**
* 向文件中写信息
*
* FileNotFoundException
* 当我们给定的File对象描述的是一个目录时
* 或File对象描述的是一个文件,但是在创建时不成功
* 这两种情况会引发FileNotFoundException
*/
File file = new File("fos.dat")
FileOutputStream fos = null
try {
/**
* FileOutputStream(File file,booelan append)
* 重载的构造方法
* 当append为true时,通过该输出流写出的数据是追加
* 到file文件末尾的。
*/
// fos = new FileOutputStream(file,true)
// fos = new FileOutputStream("fos.dat")
fos = new FileOutputStream("fos.dat",true)
// fos.write('A')//写一个字节
// fos.write('B')
// int a = 121231231
// fos.write(a>>>24)
// fos.write(a>>>16)
// fos.write(a>>>8)
// fos.write(a)
/**
* 对一个文件进行二次写操作时,文件的大小会以
* 最后这次写操作总共写的内容为准,会把文件之前
* 的数据全部废弃掉。
*/
fos.write('C')
} catch (IOException e) {
e.printStackTrace()
/**
* 面试常问:final finally的区别
*/
} finally{
try {
if(fos != null){
fos.close()
}
} catch (IOException e) {
e.printStackTrace()
}
}
}
}