怎样复制文件夹下的所有文件 如果我想把某个文件夹下的所有文件复制到目标文件夹,该怎么做?今天刚学的InputStream和OutputStream,我写的代码只能复制到一个文件里,于是复制的文件全部覆盖了,如果只创建文件夹又拒绝访问。我今天忘记带U盘了,所以没代码贴出来…… 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 创建源文件夹File对象,获取其所属的全部文件数组 File[]针对每个File创建os,在目标文件夹中创建is循环 给你个列出所有文件名的类吧,调用执行getNameList()返回一个list然后你就去遍历执行copyimport java.io.File;import java.util.ArrayList;import java.util.Iterator;import java.util.List; public class FileView{ private List nameList = new ArrayList(); public void getSubFile(String parent,String type) throws NullPointerException { File parentF = new File(parent); if(parentF.isFile()) { //if((parent.lastIndexOf(type)+3)==parent.length()){ nameList.add(parent); // return; //} return; } if(parentF.isDirectory()){ String[] subFiles = parentF.list(); for (int i = 0; i < subFiles.length; i++) { getSubFile(parentF.getAbsolutePath() + System.getProperty("file.separator") + subFiles[i],type); } } } public List getNameList() { return nameList; } public static List getNames(String dirName,String type) throws NullPointerException { File srcDir = new File(dirName); if(!srcDir.exists()) { System.out.println("Dir not exists!"); return new ArrayList(); } FileView x = new FileView(); x.getSubFile(dirName,type); return x.getNameList(); }}至于你说的覆盖问题,我理解为不是追加内容,你可以看下api,有个文件构造器是使用append的,追加true就行了 1,如果你的源文件夹中包含了文本文件和子文件夹,而子文件夹中还有子文件夹,那么你先要用递归把源文件夹下的所有文件列出。2,如果考虑的是最简单的情况,也就是你的源文件夹下只有要复制的文件,没有子文件夹,这个比较容易做了。给个参考代码import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class FolderTest { public static void main(String[] args){ File f=new File("d:/source");//source为源文件夹 FileInputStream fis=null; FileOutputStream fos=null; BufferedReader br=null; BufferedWriter bw=null; if(f.isDirectory()){ File[] files=f.listFiles(); for(int i=0;i<files.length;i++){ try { fis=new FileInputStream(files[i].getAbsoluteFile());//以源文件中的文件的绝对路径创建fis fos=new FileOutputStream("d:/target/"+files[i].getName());//目标文件夹,目标文件夹中的文件名和源相同 br=new BufferedReader(new InputStreamReader(fis)); bw=new BufferedWriter(new OutputStreamWriter(fos)); String line; while((line=br.readLine())!=null){ bw.write(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ try { br.close(); bw.close(); } catch (IOException e) { e.printStackTrace(); } } } } else{ System.out.println("这不是一个文件夹!!"); } }} java 调用迅雷批量下载 求个多附件上传的JS [color=#FF0000]高手们!急需求助!速度![/color] readline 的不能输出汉字 用什么软件可以方便地生成JAVA应用程序框架? 请教如何把一个中文字符传的标点和空格去掉! 在jdk下面调用com出问题拉?劳驾知道的进来一下。 请问ActionEvent MouseEvent 什么情况下用什么???? 小冒同学接分 如何应用纯java代码打开新窗口 JavaSE对象引用问题 Linux-jdbc的问题
然后你就去遍历执行copyimport java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class FileView{
private List nameList = new ArrayList();
public void getSubFile(String parent,String type) throws NullPointerException
{
File parentF = new File(parent);
if(parentF.isFile())
{
//if((parent.lastIndexOf(type)+3)==parent.length()){
nameList.add(parent);
// return;
//}
return;
}
if(parentF.isDirectory()){
String[] subFiles = parentF.list();
for (int i = 0; i < subFiles.length; i++)
{
getSubFile(parentF.getAbsolutePath() + System.getProperty("file.separator") + subFiles[i],type);
}
}
}
public List getNameList()
{
return nameList;
}
public static List getNames(String dirName,String type) throws NullPointerException
{ File srcDir = new File(dirName);
if(!srcDir.exists())
{
System.out.println("Dir not exists!");
return new ArrayList();
}
FileView x = new FileView();
x.getSubFile(dirName,type);
return x.getNameList(); }
}
至于你说的覆盖问题,我理解为不是追加内容,你可以看下api,有个文件构造器是使用append的,追加true就行了
2,如果考虑的是最简单的情况,也就是你的源文件夹下只有要复制的文件,没有子文件夹,这个比较容易做了。
给个参考代码import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class FolderTest {
public static void main(String[] args){
File f=new File("d:/source");//source为源文件夹
FileInputStream fis=null;
FileOutputStream fos=null;
BufferedReader br=null;
BufferedWriter bw=null;
if(f.isDirectory()){
File[] files=f.listFiles();
for(int i=0;i<files.length;i++){
try {
fis=new FileInputStream(files[i].getAbsoluteFile());//以源文件中的文件的绝对路径创建fis
fos=new FileOutputStream("d:/target/"+files[i].getName());//目标文件夹,目标文件夹中的文件名和源相同
br=new BufferedReader(new InputStreamReader(fis));
bw=new BufferedWriter(new OutputStreamWriter(fos));
String line;
while((line=br.readLine())!=null){
bw.write(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
else{
System.out.println("这不是一个文件夹!!");
}
}
}