字节数组流(数组的长度有限,数据量不会很大):
输入流:ByteArrayInputStream
输出流:ByteArrayOutputStream
下面的代码实现了文件的拷贝:
public class ByteArrayDemo02 {
public static void main(String[] args) throws IOException {
byte[] data = getByteFromFile("d:/xp/test/2.txt");
toFileFromByteArray(data,"d:/xp/test/arr.txt");
}
public static void toFileFromByteArray(byte[] src, String destPath) throws IOException {
//目的地
File dest = new File(destPath);
//选择流,字节数组输入流和文件输出流
InputStream is = new BufferedInputStream(new ByteArrayInputStream(src));
//文件输出流
OutputStream os = new BufferedOutputStream(new FileOutputStream(dest));
//操作,不断读取字节数组
byte[] flush = new byte[1024];
int len = 0;
while (-1 != (len = is.read(flush))){
//写出到字节数组中
os.write(flush, 0, len);
}
//释放资源
os.close();
is.close();
}
/**
* 文件转换为字节数组
* @param srcPath
* @return
* @throws IOException
*/
public static byte[] getByteFromFile(String srcPath) throws IOException {
//创建源
File src = new File(srcPath);
//创建字节数组目的地
byte[] dest = null;
//选择流
//文件输入流
InputStream is = new BufferedInputStream(new FileInputStream(src));
//字节数组输出流不能使用多态
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//操作,不断读取文件,写出到字节数组流中
byte[] flush = new byte[1024];
int len = 0;
while (-1 != (len = is.read(flush))){
//写出到字节数组中
bos.write(flush, 0, len);
}
bos.flush();
//获取数据
dest = bos.toByteArray();
bos.close();
is.close();
return dest;
}
}
上面的代码可以实现"d:/xp/test/2.txt"路径中的2.txt拷贝到相同文件夹下的arr.txt中。