public class T3 {
public static void main(String[] args){
String filePath = "E:\\softoon\\workspace_softoon\\TestMobile\\src\\1.docx";
String outFilePath = "E:\\softoon\\workspace_softoon\\TestMobile\\src";
String outFileName = "2.docx";
getFile(getBytes(filePath),outFilePath,outFileName);
}
/**
* 获得指定文件的byte数组
*/
public static 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();
}
}
}
}
}
分享到:
2011-10-28 15:30
浏览 44868
评论
4 楼
cs556644
2016-06-16
有个小bug
如果outFilePath的文件夹不存的话,运行程序会提示
java.io.FileNotFoundException: E:\fileUpload\111111111111111111\111233\333\1.jpg (系统找不到指定的路径。)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.(FileOutputStream.java:179)
at java.io.FileOutputStream.(FileOutputStream.java:131)
at com.hundsun.data.exchange.client.Test.getFile(Test.java:59)
at com.hundsun.data.exchange.client.Test.main(Test.java:17)
解决方法:
把43行 if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在
改为 if(!dir.exists()){//判断文件目录是否存在
即可
3 楼
m331006
2013-07-25
hanmiao 写道
你的 getBytes()方法中,如果文件的长度超过1000個字节,可否正常工作呢?
肯定可以啊。1000只是缓冲区。
2 楼
我命属木
2013-03-20
请问生成文件文件有乱码,怎么解决?
1 楼
hanmiao
2013-01-15
你的 getBytes()方法中,如果文件的长度超过1000個字节,可否正常工作呢?