字节数组输入流-ByteArrayInputStream
import java.io.*;
public class FileArrayInputAndOutput {
/**
* 将文件转二进制,ByteArrayInputStream字节数组输入流
* 文件可以是word、txt、excel、pdf
*/
public static void main(String[] args) {
//得到文件的二进制,可替换为具体的文件二进制
byte[] fileArray = fileArray();
//此文件路径不能和fileArray()方法中的路径一致
String filePath = "E:\\file\\将进酒222.doc";
if (fileArray != null){
try (ByteArrayInputStream is = new ByteArrayInputStream(fileArray);
FileOutputStream os = new FileOutputStream(filePath)){
int len ;
byte[] bytes = new byte[1024];
while ((len = is.read(bytes)) != -1) {
os.write(bytes, 0, len);
}
}catch (Exception e){
e.printStackTrace();
}
}
}
/**
* 得到文件的二进制
* 因为是在main方法中引用的此方法,所以要加static,具体情况具体分析
* @return
*/
public static byte[] fileArray(){
//文件存放位置
String filePath = "E:\\file\\将进酒.doc";
File file = new File(filePath);
byte[] fileArray = null;
try (FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream()){
byte[] bytes = new byte[1024];
int read;
while ((read = fis.read(bytes)) != -1) {
baos.write(bytes, 0, read);
}
//得到的文件二进制
fileArray = baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
return fileArray;
}
字节数组输出流--ByteArrayOutputStream
import java.io.*;
import java.util.Arrays;
public class FileArrayInputAndOutput {
/**
* 将文件转二进制,ByteArrayOutputStream 字节数组输出流
* 文件可以是word、txt、excel、pdf
*/
public static void main(String[] args) {
//文件存放位置,该位置下存在此文件
String filePath = "E:\\file\\将进酒.doc";
File file = new File(filePath);
//存放二进制
byte[] fileArray;
try (FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream()){
byte[] bytes = new byte[1024];
int read;
while ((read = fis.read(bytes)) != -1) {
baos.write(bytes, 0, read);
}
//得到的文件二进制
fileArray = baos.toByteArray();
System.out.println(Arrays.toString(fileArray));
} catch (Exception e) {
e.printStackTrace();
}
}