Java
其他流
1. 字节数组流
ByteArrayInputStreamByteArrayOutputStream
1. 读取
/**
* 字节数组流
* 数组的长度有限,数据量不会很大
*/
public void read() throws IOException {
// 数据源
String msg = "操作与文件输入流操作一致";
byte[] src = msg.getBytes();
// 选择流
ByteArrayInputStream is = new BufferedInputStream(new ByteArrayInputStream(src));
byte[] car = new byte[1024];
int len = 0;
while ((len = is.read(car)) != -1) {
System.out.println(new String(car,0,len));
}
is.close();
}
2. 写出
/**
* 操作与文件输出流有些不同,有新增方法,不能使用多态
*/
public byte[] write() throws IOException {
// 目的地
byte[] dest;
// 选择流(后面没有对应的文件)
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// 操作输出
String msg = "操作与文件输出流不一致";
byte[] info = msg.getBytes();
bos.write(info,0,info.length);
// 获取数据
dest = bos.toByteArray();
// 释放资源
bos.close();
return dest;
}
字节数组流与文件流对接
3. 文件---程序---字节数组
/**
* 1. 文件---程序---字节数组
* @param srcPath
* @return
*/
public static byte[] getBytesFromFile(String srcPath) throws IOException {
// 创建文件源
File src = new File(srcPath);
// 创建字节数组目的地
byte[] dest = null;
// 选择流(文件输入流)
InputStream is = new BufferedInputStream(new FileInputStream(src));
// 字节数组输出流,不能使用多态
ByteArrayOutputStream bos = new ByteArrayOutputStream();
// 操作,不断的读取流
byte[] car = new byte[1024];
int len = 0;
while ((len = is.read(car)) != -1) {
// 写出到字节数组流中
bos.write(car,0,len);
}
bos.flush();
// 获取数据
dest = bos.toByteArray();
return dest;
}
4.字节数组 --- 程序 --- 文件
/**
* c
* @param src
* @param destPath
*/
public static void toFileFromByteArray(byte[] src,String destPath) throws IOException {
// 创建源文件
// 目的地
File file = new File(destPath);
// 字节数组输入流
InputStream is = new BufferedInputStream(new ByteArrayInputStream(src));
// 文件输出流
OutputStream os = new BufferedOutputStream(new FileOutputStream(file));
// 操作 不断读取字节数组
byte[] car = new byte[1024];
int len = 0;
while ((len = is.read(car)) != -1) {
// 写出到文件流中
os.write(car,0,len);
}
os.flush();
// 释放资源
os.close();
is.close();
}