Java 中 FileInputStream 和 FileOutputStream 类有什么作用?
Java 提供 I/O 流来读写数据,其中流代表输入源或输出目标,可以是文件、I/O 设备或其他程序等。
有两种类型的流可用:
- InputStream - 用于从源读取(顺序)数据。
- OutputStream - 用于向目标写入数据。
FileInputStream
此类从特定文件(逐字节)读取数据。它通常用于读取包含原始字节的文件内容,例如图像。
要使用此类读取文件内容:
- 首先,需要通过传递一个字符串变量或 File 对象来实例化此类,该变量或对象代表要读取的文件的路径。
FileInputStream inputStream = new FileInputStream("file_path");
or,
File file = new File("file_path");
FileInputStream inputStream = new FileInputStream(file);- 然后使用 read() 方法的任何变体读取指定文件的内容:
int read() - 只需从当前 InputStream 读取数据并逐字节(以整数格式)返回读取的数据。
如果到达文件末尾,此方法返回 -1。
int read(byte[] b) - 此方法接受一个字节数组作为参数,并将当前 InputStream 的内容读取到给定的数组中。
此方法返回一个整数,表示字节总数或如果到达文件末尾则返回 -1。
int read(byte[] b, int off, int len) - 此方法接受一个字节数组、其偏移量 (int) 和其长度 (int) 作为参数,并将当前 InputStream 的内容读取到给定的数组中。
此方法返回一个整数,表示字节总数或如果到达文件末尾则返回 -1。
示例
假设我们在 D:/images 目录中有一个图像

以下程序使用 FileInputStream 读取上述图像的内容。
示例
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String args[]) throws IOException {
//Creating a File object
File file = new File("D:/images/javafx.jpg");
//Creating a FileInputStream object
FileInputStream inputStream = new FileInputStream(file);
//Creating a byte array
byte bytes[] = new byte[(int) file.length()];
//Reading data into the byte array
int numOfBytes = inputStream.read(bytes);
System.out.println("Data copied successfully...");
}
}输出
Data copied successfully...
FileOutputStream
这将数据写入特定文件或文件描述符(逐字节)。它通常用于写入包含原始字节的文件内容,例如图像。
要使用此类写入文件内容:
- 首先,需要通过传递一个字符串变量或 File 对象来实例化此类,该变量或对象代表要读取的文件的路径。
FileOutputStream outputStream = new FileOutputStream("file_path");
or,
File file = new File("file_path");
FileOutputStream outputStream = new FileOutputStream (file);还可以通过传递 FileDescriptor 对象来实例化 FileOutputStream 类。
FileDescriptor descriptor = new FileDescriptor(); FileOutputStream outputStream = new FileOutputStream(descriptor);
- 然后使用 write() 方法的任何变体将数据写入指定文件:
- int write(int b) - 此方法接受单个字节并将其写入当前 OutputStream。
- int write(byte[] b) - 此方法接受一个字节数组作为参数,并将其中的数据写入当前 OutputStream。
- int write(byte[] b, int off, int len) - 此方法接受一个字节数组、其偏移量 (int) 和其长度 (int) 作为参数,并将它的内容写入当前 OutputStream。
示例
假设我们在 D:/images 目录中有一个图像

以下程序读取上述图像的内容并使用 FileOutputStream 类将其写回另一个文件。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStreamExample {
public static void main(String args[]) throws IOException {
//Creating a File object
File file = new File("D:/images/javafx.jpg");
//Creating a FileInputStream object
FileInputStream inputStream = new FileInputStream(file);
//Creating a byte array
byte bytes[] = new byte[(int) file.length()];
//Reading data into the byte array
int numOfBytes = inputStream.read(bytes);
System.out.println("Data copied successfully...");
//Creating a FileInputStream object
FileOutputStream outputStream = new FileOutputStream("D:/images/output.jpg");
//Writing the contents of the Output Stream to a file
outputStream.write(bytes);
System.out.println("Data written successfully...");
}
}输出
Data copied successfully... Data written successfully...
如果验证给定的路径,您可以观察到生成的图像为:

广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP