注意一,New一个File对象只会在内存产生一个对象,而不会产生文件,要创建文件需要调用createNewFile();
注意二,如果实在未创建的路径下,需要先创建父文件夹,常用file.getParentFile.mkdirs();
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
/*
* 统计当前项目所在的文件夹的文件数,文件夹数
* 把该文件下的文件、文件夹移动到D盘
*/
public class FileTest {
static int fileNum = 0;
static int dirNum = 0;
public static void main(String[] args) throws IOException {
String dirName = "C:/Users/Administrator/workspace/skills";
File dir = new File(dirName);
CopyDir(dir);
System.out.println("文件数:"+fileNum);
System.out.println("文件夹数"+dirNum);
}
public static void CopyDir(File dir) throws IOException{
File desDir = DoChange(dir);
desDir.mkdirs();
dirNum++;
File list[] = dir.listFiles();
for(int i=0; i<list.length; ++i){
if(list[i].isDirectory()){
CopyDir(list[i]);
}
else{
CopyFile(list[i]);
}
}
}
public static void CopyFile(File file) throws IOException{
File desFile = DoChange(file);
desFile.createNewFile();
fileNum++;
InputStream is = null;
OutputStream os = null;
int temp = 0;
byte[] src = new byte[(int)file.length()];
try{
is = new FileInputStream(file);
os = new FileOutputStream(desFile);
is.read(src);
os.write(src);
}catch(Exception e){
e.printStackTrace();
}finally{
if(is!=null){
is.close();
}
if(os!=null){
os.close();
}
}
}
public static File DoChange(File file){
String fileName = file.getAbsolutePath();
String desName = fileName.replaceFirst(fileName.substring(0,2),"d:");
File desFile = new File(desName);
return desFile;
}
}
输出
文件数:23
文件夹数6