FileInputStream流的int read(byte b[]) 方法从源中试图读取b.length个字节到字节数组b中,返回实际读取的字节数目。如果到达文件的末尾,则返回-1。
时间: 2024-03-25 09:38:01 浏览: 21
是的,FileInputStream流的int read(byte b[])方法从源中试图读取b.length个字节到字节数组b中,返回实际读取的字节数目。如果到达文件的末尾,则返回-1。这个方法的具体实现是,会从输入流中读取数据,存储到指定的字节数组b中,返回实际读取的字节数目。如果读取到文件的末尾,即已经读取完了文件中的所有数据,此时再调用read(byte b[])方法将返回-1。在读取数据之前,需要先创建一个FileInputStream对象,并传入要读取的文件名或文件路径。例如,可以使用以下代码创建一个FileInputStream对象并读取文件数据到字节数组中:
```
FileInputStream fis = new FileInputStream("example.txt");
byte[] buffer = new byte[1024];
int len = fis.read(buffer);
```
这里创建了一个FileInputStream对象,并指定要读取的文件名为example.txt。然后创建了一个长度为1024的字节数组buffer,并将文件中的数据读取到该数组中,返回实际读取的字节数目len。如果返回的len为-1,则说明已经读取到文件的末尾。
相关问题
读取文件返回byte数组
在Java中,可以使用FileInputStream读取文件并返回byte数组。示例代码如下:
```java
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class ReadFile {
public static void main(String[] args) {
File file = new File("test.txt");
try (FileInputStream inputStream = new FileInputStream(file)) {
byte[] bytes = new byte[(int) file.length()];
inputStream.read(bytes);
// 处理读取的byte数组
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上述代码中,首先创建一个File对象表示要读取的文件,然后使用FileInputStream读取文件并返回字节流。接着,将字节流转换为byte数组,数组长度为文件的长度。最后,可以对读取的byte数组进行处理。
需要注意的是,在使用try-with-resources语句时,需要手动关闭FileInputStream。
使用文件字节输入流和文件字节输出流将d盘b.txt文件的内容复制到d盘c.txt文件中
好的,以下是Java代码实现:
```java
import java.io.*;
public class FileCopy {
public static void main(String[] args) {
String sourceFilePath = "D:/b.txt";
String targetFilePath = "D:/c.txt";
try (FileInputStream fis = new FileInputStream(sourceFilePath);
FileOutputStream fos = new FileOutputStream(targetFilePath)) {
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
System.out.println("文件复制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
首先,我们定义了源文件路径和目标文件路径。
然后,我们使用 `FileInputStream` 和 `FileOutputStream` 分别创建输入流和输出流。`FileInputStream` 用于读取源文件的内容,`FileOutputStream` 用于将读取的内容写入目标文件。
接下来,我们使用一个缓冲区 `buffer` 来存储每次读取的字节,长度为 1024。
在 `while` 循环中,我们使用 `fis.read(buffer)` 方法来读取源文件中的内容,并将读取的字节数存储在 `length` 变量中。如果 `length` 大于 0,说明还有内容需要读取,我们使用 `fos.write(buffer, 0, length)` 方法将读取的内容写入目标文件中。
最后,在 `try` 块的末尾,我们输出一条消息,表示复制成功。如果出现异常,我们将异常打印出来。