1. 将File转换为byte[]数组

1
2
3
//java.nio.file
String filePath = "C:\\Users\\user\\Pictures\\22.jpg";
byte[] bytes = Files.readAllBytes(Paths.get(filePath));

2. 将FileInputStream 转换为byte[]数组

方式1:

1
2
3
4
String filePath = "C:\\Users\\user\\Pictures\\22.jpg";
FileInputStream inputStream = new FileInputStream(filePath);
byte[] bytes1 = new byte[fileInputStream.available()];
fileInputStream.read(bytes1);

方式2:

1
2
//使用Apache Common中IOUtils.toByteArray()转换
byte[] bytes = IOUtils.toByteArray(inputStream);

方式3:

1
2
3
4
5
6
7
8
9
String filePath = "C:\\Users\\user\\Pictures\\22.jpg";
FileInputStream fileInputStream = new FileInputStream(filePath);
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] bytes = new byte[4096];
int n = 0;
while (-1 != fileInputStream.read(bytes)) {
output.write(bytes);
}
byte[] bytes2 = output.toByteArray();

方式4:

1
2
//使用Google Guava中ByteStreams.toByteArray()转换
byte[] bytes = ByteStreams.toByteArray(inputStream);

方式5(jdk9):

1
byte[] bytes = inputStream.readAllBytes()

3. 将byte[]数组转换为InputStream

1
2
byte[] bytes = new byte[1024];
InputStream inputStream = new ByteArrayInputStream(bytes);

4. 将byte[]数组转换为File

1
2
3
4
File file = new File("C:\\Users\\user\\Pictures\\22.jpg");
OutputStream output = new FileOutputStream(file);
BufferedOutputStream bufferedOutput = new BufferedOutputStream(output);
bufferedOutput.write(byt);

5. ByteArrayInputStream使用

1
2
3
4
5
6
7
byte[] source = ...;
ByteArrayInputStream bis = new ByteArrayInputStream(source);
// read bytes from bis ...

ByteArrayOutputStream bos = new ByteArrayOutputStream();
// write bytes to bos ...
byte[] sink = bos.toByteArray();