//需求是这样的!
我有一个目录里有很多壁纸分散在很多子目录里!你懂得,360的那个!
我想把这些壁纸都复制到没有子目录的文件夹里! 当然!能剪切就最好!
是纠结了很久的代码!没法完成之后上来求救了!
package test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileTest1 {
/**
* @param args
* @throws IOException
*/
/*
* 想要列出指定的目录下的所有内容。包含着子目录中的内容。
* 思路:
* 1:获取指定目录的内容
* a:因为目录下有子目录,所以考虑用到递归
* 2:将这些文件复制到一个文件中。
* a:用IO流
* b; 明确1:数据源和目的地都是硬盘,明确2:因为是媒体文件,所以都是字节
* c; 需要高效,所以用到缓冲流;
*/
public static void main(String[] args) throws IOException {
//把一个目录封装成对象便于操作
File file = new File("E:\\360Download");
File[] files = file.listFiles();
//建立读取流跟读入流
BufferedInputStream bufs =null;
BufferedOutputStream bufw =null;
new BufferedOutputStream( new FileOutputStream("E:\\My piture"));
read_Test(file,files,bufs,bufw);
}
public static void read_Test(File file ,File[] files,BufferedInputStream bufs,BufferedOutputStream bufw) throws IOException {
for(File names: files)
{
if(names.isDirectory())
{
read_Test(names,files,bufs,bufw);//已经获取一个目录下所有的文件名字,包括子目录下的
}
//System.out.println(names); //但是发现目录中还有目录,所以考虑用递归
else
{
if(names.isFile())
{
bufs=new BufferedInputStream( new FileInputStream(names));
bufw =new BufferedOutputStream( new FileOutputStream("E:\\My piture"));
byte[] by = new byte[1024*1024];
int len =0;
while((len=bufs.read(by))!=-1)
{
bufw.write(by, 0, len);
bufw.flush();
}
bufs.close();
bufw.close();
}
}
}
}
}
|