//文件分类----->单机版
/*
把 f:/a文件夹下面的所有文件 都根据后缀名统一放到f:/dd文件夹下面
例如f:/a下面有个txt文件,然后就要在f:/dd文件夹下面建立相应的txt文件夹,然后把txt类型的文件都放到这个文件夹下面
*/
import java.io.*;
import java.util.*;
public class TestFile {
public static void main(String args[]) {
long lo = System.currentTimeMillis();
TestFile tf = new TestFile();
tf.creatFolder(new File("f:/a"),"f:/dd");
long lo1 = System.currentTimeMillis();
System.out.println("总共用了:"+(lo1-lo)/1000+"秒");//打印出花了多少时间
}//此方法主要用来创建文件夹的
public void creatFolder(File f1,String sfc) {
if(f1.isDirectory()) { //判断是不是一个有效的目录
//File f1 = new File("f:/a");
File[] file = f1.listFiles();//用一个file[]数组来装f1下面的文件及文件夹
for(int i =0;i<file.length;i++){
//System.out.println(file[i].getName());//获取文件的名字
if(file[i].isDirectory()){
creatFolder(file[i],sfc);
}else{
if(!file[i].isHidden()){//判断是否是隐藏文件 如果是,就不复制
String str[] = file[i].getName().split("\\.");//字符串分割,获取后缀名
if(str.length>=2){ //判断这个文件有没有后缀名,如果没有,就放在一个固定的文件夹里面
File fc = new File(sfc+"/"+(str[str.length-1]).toLowerCase());//创建一个文件来存放东西
fc.mkdirs();
System.out.println(file[i].getPath());
//调用复制文件的方法copyFile()
this.copyFile( new File(file[i].getPath()),new File(sfc+"/"+(str[str.length-1]).toLowerCase()+"/"+file[i].getName()));
}else{
File fc = new File(sfc+"/else");//创建一个文件来存放东西
fc.mkdirs();
System.out.println(file[i].getPath());
//调用复制文件的方法copyFile()
this.copyFile( new File(file[i].getPath()),new File(sfc+"/else/"+file[i].getName()));
}
}
}
}
}else{
System.out.println("不是有效的目录,请重新输入!!!");
}
}//把文件复制到目标文件夹
public void copyFile(File ff1,File ff2) {
//开始从ff1去读取数据:
// File ff1 = new File(file[i].getPath());
BufferedInputStream bffis = null;
BufferedOutputStream bffos = null;
try{
bffis = new BufferedInputStream(new FileInputStream(ff1));//创建BufferedInputStream对象来读取文件中的数据
// File ff2 = new File("f:/b/"+(str[str.length-1]).toLowerCase()+"/"+file[i].getName());
bffos = new BufferedOutputStream(new FileOutputStream(ff2));//创建BufferedInputStream对象来写入数据 byte[] br = new byte[1024*20];//创建一个数组来接收读取到的东西,
//开始读取
int lenbff = 0;
while((lenbff = bffis.read(br)) !=-1){
//System.out.println(br.length);
bffos.write(br,0,br.length);//一边读取,一边就写入指定的文件内。
}
}catch(FileNotFoundException e){
System.out.println("文件没有找到!!");
e.printStackTrace();
}catch(IOException e1){
e1.printStackTrace();
}finally{
//关闭资源
try{
bffos.close();
bffis.close();
}catch(IOException e2){
e2.printStackTrace();
}
}
}
}
/*
把 f:/a文件夹下面的所有文件 都根据后缀名统一放到f:/dd文件夹下面
例如f:/a下面有个txt文件,然后就要在f:/dd文件夹下面建立相应的txt文件夹,然后把txt类型的文件都放到这个文件夹下面
*/
import java.io.*;
import java.util.*;
public class TestFile {
public static void main(String args[]) {
long lo = System.currentTimeMillis();
TestFile tf = new TestFile();
tf.creatFolder(new File("f:/a"),"f:/dd");
long lo1 = System.currentTimeMillis();
System.out.println("总共用了:"+(lo1-lo)/1000+"秒");//打印出花了多少时间
}//此方法主要用来创建文件夹的
public void creatFolder(File f1,String sfc) {
if(f1.isDirectory()) { //判断是不是一个有效的目录
//File f1 = new File("f:/a");
File[] file = f1.listFiles();//用一个file[]数组来装f1下面的文件及文件夹
for(int i =0;i<file.length;i++){
//System.out.println(file[i].getName());//获取文件的名字
if(file[i].isDirectory()){
creatFolder(file[i],sfc);
}else{
if(!file[i].isHidden()){//判断是否是隐藏文件 如果是,就不复制
String str[] = file[i].getName().split("\\.");//字符串分割,获取后缀名
if(str.length>=2){ //判断这个文件有没有后缀名,如果没有,就放在一个固定的文件夹里面
File fc = new File(sfc+"/"+(str[str.length-1]).toLowerCase());//创建一个文件来存放东西
fc.mkdirs();
System.out.println(file[i].getPath());
//调用复制文件的方法copyFile()
this.copyFile( new File(file[i].getPath()),new File(sfc+"/"+(str[str.length-1]).toLowerCase()+"/"+file[i].getName()));
}else{
File fc = new File(sfc+"/else");//创建一个文件来存放东西
fc.mkdirs();
System.out.println(file[i].getPath());
//调用复制文件的方法copyFile()
this.copyFile( new File(file[i].getPath()),new File(sfc+"/else/"+file[i].getName()));
}
}
}
}
}else{
System.out.println("不是有效的目录,请重新输入!!!");
}
}//把文件复制到目标文件夹
public void copyFile(File ff1,File ff2) {
//开始从ff1去读取数据:
// File ff1 = new File(file[i].getPath());
BufferedInputStream bffis = null;
BufferedOutputStream bffos = null;
try{
bffis = new BufferedInputStream(new FileInputStream(ff1));//创建BufferedInputStream对象来读取文件中的数据
// File ff2 = new File("f:/b/"+(str[str.length-1]).toLowerCase()+"/"+file[i].getName());
bffos = new BufferedOutputStream(new FileOutputStream(ff2));//创建BufferedInputStream对象来写入数据 byte[] br = new byte[1024*20];//创建一个数组来接收读取到的东西,
//开始读取
int lenbff = 0;
while((lenbff = bffis.read(br)) !=-1){
//System.out.println(br.length);
bffos.write(br,0,br.length);//一边读取,一边就写入指定的文件内。
}
}catch(FileNotFoundException e){
System.out.println("文件没有找到!!");
e.printStackTrace();
}catch(IOException e1){
e1.printStackTrace();
}finally{
//关闭资源
try{
bffos.close();
bffis.close();
}catch(IOException e2){
e2.printStackTrace();
}
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货