Androin学习笔记四十六:拷贝文件到另一个目录下
2016-05-25 10:22
267 查看
出处:/article/2490837.html
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
/**
* 复制单个文件
* @param oldPath String 原文件路径 如:c:/fqf.txt
* @param newPath String 复制后路径 如:f:/fqf.txt
* @return boolean
*/
public void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { //文件存在时
InputStream inStream = new FileInputStream(oldPath); //读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
/**
* 复制整个文件夹内容
* @param oldPath String 原文件路径 如:c:/fqf
* @param newPath String 复制后路径 如:f:/fqf/ff
* @return boolean
*/
public void copyFolder(String oldPath, String newPath) {
try {
(new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
File a=new File(oldPath);
String[] file=a.list();
File temp=null;
for (int i = 0; i < file.length; i++) {
if(oldPath.endsWith(File.separator)){
temp=new File(oldPath+file[i]);
}
else{
temp=new File(oldPath+File.separator+file[i]);
}
if(temp.isFile()){
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath + "/" +
(temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ( (len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if(temp.isDirectory()){//如果是子文件夹
copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
}
}
}
catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();
}
}
PS:
拷贝assets目录下文件
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
InputStream is = ctx.getAssets().open("test.apk");
特别感谢jqj1107提的建议,写代码时要谨慎,尽可能不使用try/catch,拷贝文件时检查文件属性等参数,确保万无一失
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
if (!oldfile.exists()) {return ;}
if (!oldfile.isFile()) {return ;}
if (!oldfile.canRead()) {return ;}
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
/**
* 复制单个文件
* @param oldPath String 原文件路径 如:c:/fqf.txt
* @param newPath String 复制后路径 如:f:/fqf.txt
* @return boolean
*/
public void copyFile(String oldPath, String newPath) {
try {
int bytesum = 0;
int byteread = 0;
File oldfile = new File(oldPath);
if (oldfile.exists()) { //文件存在时
InputStream inStream = new FileInputStream(oldPath); //读入原文件
FileOutputStream fs = new FileOutputStream(newPath);
byte[] buffer = new byte[1444];
int length;
while ( (byteread = inStream.read(buffer)) != -1) {
bytesum += byteread; //字节数 文件大小
System.out.println(bytesum);
fs.write(buffer, 0, byteread);
}
inStream.close();
}
}
catch (Exception e) {
System.out.println("复制单个文件操作出错");
e.printStackTrace();
}
}
/**
* 复制整个文件夹内容
* @param oldPath String 原文件路径 如:c:/fqf
* @param newPath String 复制后路径 如:f:/fqf/ff
* @return boolean
*/
public void copyFolder(String oldPath, String newPath) {
try {
(new File(newPath)).mkdirs(); //如果文件夹不存在 则建立新文件夹
File a=new File(oldPath);
String[] file=a.list();
File temp=null;
for (int i = 0; i < file.length; i++) {
if(oldPath.endsWith(File.separator)){
temp=new File(oldPath+file[i]);
}
else{
temp=new File(oldPath+File.separator+file[i]);
}
if(temp.isFile()){
FileInputStream input = new FileInputStream(temp);
FileOutputStream output = new FileOutputStream(newPath + "/" +
(temp.getName()).toString());
byte[] b = new byte[1024 * 5];
int len;
while ( (len = input.read(b)) != -1) {
output.write(b, 0, len);
}
output.flush();
output.close();
input.close();
}
if(temp.isDirectory()){//如果是子文件夹
copyFolder(oldPath+"/"+file[i],newPath+"/"+file[i]);
}
}
}
catch (Exception e) {
System.out.println("复制整个文件夹内容操作出错");
e.printStackTrace();
}
}
PS:
拷贝assets目录下文件
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
InputStream is = ctx.getAssets().open("test.apk");
特别感谢jqj1107提的建议,写代码时要谨慎,尽可能不使用try/catch,拷贝文件时检查文件属性等参数,确保万无一失
[java] view
plain copy
![](https://code.csdn.net/assets/CODE_ico.png)
if (!oldfile.exists()) {return ;}
if (!oldfile.isFile()) {return ;}
if (!oldfile.canRead()) {return ;}
相关文章推荐
- git remote
- 类似京东商城客户端应用iOS源码
- lintcode ----最小子数组
- leetcode 之 Next Permutation
- Maxdos 9.3不能引导系统进入Maxdos
- iOS 推送通知中那些让你故意犯的错误~
- apache配置防盗链
- 《SharePoint 2013 应用开发实战》目录
- 打给留守老人的诈骗电话
- char varchar varchar2 的区别
- 216. Combination Sum III
- java多线程
- SQLite及ORMlite在WebApp中的使用
- 第二冲刺阶段 工作总结 02
- acm 3 1014 直线分割平面
- leetcode 35. Search Insert Position-二分查找|递归|非递归
- Linux下使用system()函数一定要谨慎
- Condition
- sonar ant+jacoco 编译测试并出具测试代码覆盖率报告
- BCGSoft Demo示例展示:Ribbon示例集合