//File.separator 斜杠使用 这个参数代替,解决java移植 到其其它平台兼容问题
String fsr=String.format("D:%sceshi", File.separator);//需要复制的文件夹 不包括ceshi
String tsr=String.format("D:%sDownloads", File.separator);//需要复制到的文件夹
File f=new File(fsr);
File t=new File(tsr);
if(f.exists()&&f.isDirectory())
{
File[] filelist=f.listFiles();
int fcout=filelist.length;
for(int i=0;i<fcout;i++)
{
fileChannelCopy(filelist[i],t);
}
}
//复制文件夹的方法
public void fileChannelCopy(File s, File t) {
if(s.isDirectory())
{
File nf=new File(String.format(t.getPath()+File.separator+s.getName()));
if(!nf.exists())
{
nf.mkdir();
}
File[] filelist=s.listFiles();
for(File fi:filelist)
{
nf=new File(String.format(nf.getPath()));
fileChannelCopy(fi,nf);
}
}
else
{
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
t=new File(String.format(t.getPath()+File.separator+s.getName()));
fi = new FileInputStream(s);
fo = new FileOutputStream(t);
in = fi.getChannel();//得到对应的文件通道
out = fo.getChannel();//得到对应的文件通道
in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
String fsr=String.format("D:%sceshi", File.separator);//需要复制的文件夹 不包括ceshi
String tsr=String.format("D:%sDownloads", File.separator);//需要复制到的文件夹
File f=new File(fsr);
File t=new File(tsr);
if(f.exists()&&f.isDirectory())
{
File[] filelist=f.listFiles();
int fcout=filelist.length;
for(int i=0;i<fcout;i++)
{
fileChannelCopy(filelist[i],t);
}
}
//复制文件夹的方法
public void fileChannelCopy(File s, File t) {
if(s.isDirectory())
{
File nf=new File(String.format(t.getPath()+File.separator+s.getName()));
if(!nf.exists())
{
nf.mkdir();
}
File[] filelist=s.listFiles();
for(File fi:filelist)
{
nf=new File(String.format(nf.getPath()));
fileChannelCopy(fi,nf);
}
}
else
{
FileInputStream fi = null;
FileOutputStream fo = null;
FileChannel in = null;
FileChannel out = null;
try {
t=new File(String.format(t.getPath()+File.separator+s.getName()));
fi = new FileInputStream(s);
fo = new FileOutputStream(t);
in = fi.getChannel();//得到对应的文件通道
out = fo.getChannel();//得到对应的文件通道
in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fi.close();
in.close();
fo.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}