linuxでファイルをコピーする
2756 ワード
説明:linuxの下で絶対パスでファイルをコピーします.以下のコードは1つのフォルダの中のすべてのファイルを別のフォルダにコピーすることを実現します.
特に注意:linuxとwindowの差が大きいところ:フォルダ(またはファイル)の読み取りや書き込みなどの権限があるので、コピーする必要があるファイルは読み取り可能で、ターゲットフォルダは書き込み可能でなければなりません!私はもうここで何度も失敗しました.
具体的なコードは次のとおりです.
特に注意: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();
}
}