byte数组与File文件的转换

byte数组与File文件的转换,第1张

业务场景:

在异步线程中,主线程提交了一个文件,子线程接收文件后出现文件大小变为“0”的情况。

原因:文件从主线程到子线程连接断开,导致文件上传数据丢失

处理方式:在主线程中将文件转为byte数组,在子线程接收该数组后再将数组转为文件。

File与byte数组的相互转换

场景一:File和byte[]的相互转换

public static byte[] File2byte(String filePath)

{

byte[] buffer = null

try

{

File file = new File(filePath)

FileInputStream fis = new FileInputStream(file)

ByteArrayOutputStream bos = new ByteArrayOutputStream()

byte[] b = new byte[1024]

int n

while ((n = fis.read(b)) != -1)

{

bos.write(b, 0, n)

}

fis.close()

bos.close()

buffer = bos.toByteArray()

}

catch (FileNotFoundException e)

{

e.printStackTrace()

}

catch (IOException e)

{

e.printStackTrace()

}

return buffer

}

public static void byte2File(byte[] buf, String filePath, String fileName)

{

BufferedOutputStream bos = null

FileOutputStream fos = null

File file = null

try

{

File dir = new File(filePath)

if (!dir.exists() &&dir.isDirectory())

{

dir.mkdirs()

}

file = new File(filePath + File.separator + fileName)

fos = new FileOutputStream(file)

bos = new BufferedOutputStream(fos)

bos.writ

Java 文件和byte数组转换

/**

* 获得指定文件的byte数组

*/

private byte[] getBytes(String filePath){

byte[] buffer = null

try {

File file = new File(filePath)

FileInputStream fis = new FileInputStream(file)

ByteArrayOutputStream bos = new ByteArrayOutputStream(1000)

byte[] b = new byte[1000]

int n

while ((n = fis.read(b)) != -1) {

bos.write(b, 0, n)

}

fis.close()

bos.close()

buffer = bos.toByteArray()

} catch (FileNotFoundException e) {

e.printStackTrace()

} catch (IOException e) {

e.printStackTrace()

}

return buffer

}

/**

* 根据byte数组,生成文件

*/

public static void getFile(byte[] bfile, String filePath,String fileName) {

BufferedOutputStream bos = null

FileOutputStream fos = null

File file = null

try {

File dir = new File(filePath)

if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在

dir.mkdirs()

}

file = new File(filePath+"\\"+fileName)

fos = new FileOutputStream(file)

bos = new BufferedOutputStream(fos)

bos.write(bfile)

} catch (Exception e) {

e.printStackTrace()

} finally {

if (bos != null) {

try {

bos.close()

} catch (IOException e1) {

e1.printStackTrace()

}

}

if (fos != null) {

try {

fos.close()

} catch (IOException e1) {

e1.printStackTrace()

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11467447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存