OutputStream
OutputStream类是Java IO API中所有输出流的基类。子类包括BufferedOutputStream,FileOutputStream等等。
1.1 输出流和目标媒介
输出流往往和某些数据的目标媒介相关联,比如文件,网络连接,管道等。
1.2 Write(byte)
write(byte)方法用于把单个字节写入到输出流中。OutputStream的write(byte)方法将一个包含了待写入数据的int变量作为参数进行写入。
OutputStream的子类可能会包含write()方法的替代方法。比如,DataOutputStream允许你利用writeBoolean(),writeDouble()等方法将基本类型int,long,float,double,boolean等变量写入。
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt");
while(hasMoreData()) {
int data = getMoreData();
output.write(data);
}
output.close();
1.3 flush()
OutputStream的flush()方法将所有写入到OutputStream的数据冲刷到相应的目标媒介中。
1.4 close()
当你结束数据写入时,需要关闭OutputStream。
FileInputStream
FileInputStream可以以字节流的形式读取文件内容。FileInputStream是InputStream的子类,这意味着你可以把FileInputStream当做InputStream使用(FileInputStream与InputStream的行为类似)。
InputStream input = new FileInputStream("c:\\data\\input-text.txt");
int data = input.read();while(data != -1) {
//do something with data...
doSomethingWithData(data);
data = input.read();
}
input.close();
FileInputStream的read()方法返回读取到的包含一个字节内容的int变量(译者注:0~255)。如果read()方法返回-1,意味着程序已经读到了流的末尾,此时流内已经没有多余的数据可供读取了,你可以关闭流。-1是一个int类型,不是byte类型,这是不一样的。
FileInputStream也有其他的构造函数,允许你通过不同的方式读取文件。
File file = new File("c:\\data\\input-text.txt");
InputStream input = new FileInputStream(file);
FileOutputStream
FileOutputStream可以往文件里写入字节流,它是OutputStream的子类,所以你可以像使用OutputStream那样使用FileOutputStream。
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt");
while(moreData) {
int data = getMoreData();
output.write(data);
}
output.close();
FileOutputStream的write()方法取一个包含了待写入字节(译者注:低8位数据)的int变量作为参数进行写入。
FileOutputStream也有其他的构造函数,允许你通过不同的方式写入文件。
3.1 文件内容的覆盖Override VS追加Appending
当你创建了一个指向已存在文件的FileOutputStream,你可以选择覆盖整个文件,或者在文件末尾追加内容。通过使用不同的构造函数可以实现不同的目的。
其中一个构造函数取文件名作为参数,会覆盖任何此文件名指向的文件。
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt");
另外一个构造函数取2个参数:文件名和一个布尔值,布尔值表明你是否需要覆盖文件。这是构造函数的例子:
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt", true); //appends to file
OutputStream output = new FileOutputStream("c:\\data\\output-text.txt", false); //overwrites file
3.2 写入字节数组
既然FileOutputStream是OutputStream的子类,所以你也可以往FileOutputStream中写入字节数组,而不需要每次都只写入一个字节。
3.2 flush()
当你往FileOutputStream里写数据的时候,这些数据有可能会缓存在内存中。在之后的某个时间,比如,每次都只有X份数据可写,或者FileOutputStream关闭的时候,才会真正地写入磁盘。当FileOutputStream没被关闭,而你又想确保写入到FileOutputStream中的数据写入到磁盘中,可以调用flush()方法,该方法可以保证所有写入到FileOutputStream的数据全部写入到磁盘中。
备注:文章参考:
本文深入探讨Java IO流的基本概念,包括OutputStream和InputStream的使用,FileInputStream与FileOutputStream的读写操作,以及如何控制文件覆盖与追加。文章还详细介绍了如何使用flush()和close()方法确保数据正确写入。
&spm=1001.2101.3001.5002&articleId=106852030&d=1&t=3&u=95a26923138b4f40939557fa071e44d7)
1660

被折叠的 条评论
为什么被折叠?



