FIleOutputStream
The Java FileInputStream class, java.io.FileInputStream, makes it possible to read the contents of a file as a stream of bytes. The Java FileInputStream class is a subclass of Java InputStream. This means that you use the Java FileInputStream as an InputStream (FileInputStream behaves like an InputStream).
FileOutputStream案例
package Bean;
import java.io.*;
public class InputStreamBean {
public static void main(String[] args) {
//使用try括号包括需要释放的资源,该资源就会自动释放...
try (InputStream inputStream = new FileInputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\input.txt");
) {
int data = 0;
while (data != -1) {
data = inputStream.read();
if (data != -1) {
System.out.print((char) data);
} else {
break;
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileInputStream构造函数
第一个构造函数将String作为参数。 此字符串应包含文件系统中要读取的文件所在的路径。
第二个FileInputStream构造函数将File对象作为参数。 File对象必须指向您要读取的文件
read method
您可以使用read()方法,就像InputStream的read()方法一样
read(byte[])
作为InputStream,FileInputStream还具有两个read()方法,可以将数据读入字节数组。 顺便说一下,这些方法是从Java InputStream类继承的。 这些方法是:
int read(byte[])
int read(byte[], int offset, int length)
读取性能
一次读取一个字节数组要比一次从Java FileInputStream读取单个字节快。 通过读取字节数组而不是一次读取单个字节,该差异很容易成为性能提高的10倍或更多。
使用缓冲数组的输入流
略
关闭一个FileInputStream
略
将FileInputStream转换为Reader
Java FileInputStream是基于字节的数据流。 您可能知道,Java IO API还具有一个基于字符的输入流集,称为“读取器”。 您可以使用Java InputStreamReader将Java FileInputStream转换为Java Reader
try (InputStream inputStream = new FileInputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\input.txt");
) {
Reader reader = new InputStreamReader(inputStream);
FileOutputStream
The Java FileOutputStream class, java.io.FileOutputStream, makes it possible to write a file as a stream of bytes. The Java FileOutputStream class is a subclass of Java OutputStream meaning you can use a FileOutputStream as an OutputStream.
FIleOutputStream案例(写入单个字节与写入字节数组)
package Bean;
import java.io.*;
public class InputStreamBean {
public static void main(String[] args) {
//使用try括号包括需要释放的资源,该资源就会自动释放...
try (OutputStream outputStream = new FileOutputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\output4.txt", false);
) {
// 写入字节数组
// String hello = "HelloWorld,China,American,Japan,Korea";
// byte[] bytes = hello.getBytes();
// outputStream.write(bytes);
// 写入单个字节值
outputStream.write(123);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
FileOutputStream构造函数
第一个构造函数采用String,其中包含要写入的文件的路径。
第二个FileOutputStream构造函数接受一个Java File对象,该对象指向文件系统中的文件。
覆盖或者追加文件
覆盖文件:
OutputStream outputStream = new FileOutputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\output4.txt", false);
追加文件:
OutputStream outputStream = new FileOutputStream("C:\\Users\\psdxdgJ6DT\\Desktop\\output4.txt", true);
Write
要将数据写入Java FileOutputStream,可以使用其write()方法。 write()方法采用一个int,其中包含要写入的字节的字节值。
Writing Byte Arrays
由于Java FileOutputStream是OutputStream的子类,因此您也可以将字节数组写入FileOutputStream,而不是一次只写入一个字节
写入性能
将字节数组写入Java FileOutputStream比一次写入一个字节更快。 加速可能非常显着-高达10倍甚至更高。 因此,建议尽可能使用write(byte [])方法。
使用透明缓冲的FileOutputStream
(略)
flush
调用flush()将确保到目前为止已写入FileOutputStream的所有数据也已完全写入磁盘