java 字节数组截取_Java字符串转数组

java 字节数组截取_Java字符串转数组在 Java 中获取文件的字节数组可以通过以下几种方法 1 使用 Files readAllBytes 方法 javaimport java nio file Files import java nio file Path import java nio file Paths Path path Paths get C temp test txt byte data

在Java中获取文件的字节数组可以通过以下几种方法:

1. 使用`Files.readAllBytes()`方法:

```java

import java.nio.file.Files;

import java.nio.file.Path;

import java.nio.file.Paths;

Path path = Paths.get("C:/temp/test.txt");

byte[] data = Files.readAllBytes(path);

2. 使用`FileInputStream`和`ByteArrayOutputStream`:```java

import java.io.File;

import java.io.FileInputStream;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

File file = new File("C:/temp/test.txt");

byte[] bytes = new byte[(int) file.length()];

try (FileInputStream fis = new FileInputStream(file);

ByteArrayOutputStream bos = new ByteArrayOutputStream()) {

int buf_size = 1024;

byte[] buffer = new byte[buf_size];

int len;

while ((len = fis.read(buffer, 0, buf_size)) != -1) {

bos.write(buffer, 0, len);

}

bytes = bos.toByteArray();

} catch (IOException e) {

e.printStackTrace();

}

3. 使用`FileChannel`和`MappedByteBuffer`:

```java

import java.io.File;

import java.io.RandomAccessFile;

import java.nio.MappedByteBuffer;

import java.nio.channels.FileChannel;

import java.nio.channels.FileChannel.MapMode;

File file = new File("C:/temp/test.txt");

try (RandomAccessFile raf = new RandomAccessFile(file, "r");

FileChannel channel = raf.getChannel()) {

long fileSize = channel.size();

if (fileSize > Integer.MAX_VALUE) {

System.out.println("File too big...");

return null;

}

MappedByteBuffer buffer = channel.map(MapMode.READ_ONLY, 0, (int) fileSize);

byte[] bytes = new byte[(int) fileSize];

buffer.get(bytes);

return bytes;

} catch (IOException e) {

e.printStackTrace();

}

4. 使用`Apache Commons IO`库:```java

import org.apache.commons.io.FileUtils;

byte[] fileBytes = FileUtils.readFileToByteArray(new File("C:/temp/test.txt"));

请根据您的具体需求选择合适的方法。需要注意的是,`Files.readAllBytes()`方法会将整个文件读入内存,因此对于大文件可能会导致`OutOfMemoryError`。如果文件非常大,建议使用流式读取方法,如`FileInputStream`和`FileChannel`。

编程小号
上一篇 2025-04-20 11:49
下一篇 2025-05-03 16:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/80277.html