说明:在linux下以绝对路径方式复制文件,以下代码实现的是把一个文件夹里面所有的文件复制到另一个文件夹里面
特别注意:linux和window差别比较大的地方:文件夹(或文件)的可读可写等权限,所以需要复制的文件必须可读,目标文件夹必须可写!我已经在此栽了好几个跟头了、
以下是具体代码:
/*** 获得文件名.
* @return List
*/
public List<Map<String,Object>> getAddrs() {
List<Map<String,Object>> listmap = new ArrayList<Map<String,Object>>();
try {
//linux环境下绝对路径,需要复制的文件所在的文件夹
String pathFrom = "/home/dingbing/tomcat7.0.47/webapps/FuploadM/upload/";
//linux环境下绝对路径,需要复制的文件所在的文件夹
String pathTo = "/home/dingbing/tomcat7.0.47/webapps/filematch/resources/image/uploadNew/";
// String pathFrom = "C:/Users/AMCC/Desktop/FuploadM/upload"; windows环境下绝对路径,需要复制的文件所在的文件夹
// String pathTo =
// "C:/Users/AMCC/Desktop/FileManager/src/main/webapp/resources/image/uploadNew/"; windows环境下绝对路径,目标文件夹
File file = new File(pathFrom);
// get the folder list
File[] array = file.listFiles();
System.out.println("length: " + array.length);
if(array != null) {
for(int i=0;i<array.length;i++){
Map<String, Object> map = new HashMap<String, Object>();
if(array[i].isFile()){
// only take file name
map.put("file_name", array[i].getName());
//执行复制
copyFile(pathFrom + array[i].getName(), pathTo + array[i].getName());
listmap.add(map);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return listmap;
}
/***复制单个文件
*
*/
public void copyFile(String oldPath, String newPath) {
System.out.println("coping file ...");
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();
}
}