首页 > 代码库 > java之IO实例
java之IO实例
实例1:从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印
分析:这里用到了file类的方法和递归
public class Test10{
public static void main(String[ ] args)
{
Scanner sc=new Scanner(System.in);
String path=sc.nextLine( );
File f=new File(path);
System.out.println(f.getName( ));
method(f,1);
}
public static void method(File f, int level)
{
File [ ] files=f.listFiles( );
for(File file:files)
{
for(int i=0;i<level;i++)
{
System.out.print("\t");
}
System.out.println(file.getName( ));
if(file.isDirectory ( ))
{
method(file,level+1);
}
}
}
}
实例2:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
public class Test9 {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入来源路径");
String pathSrc = http://www.mamicode.com/sc.nextLine();
System.out.println("请输入目的地路径");
String pathDest = sc.nextLine();
method(pathSrc,pathDest);
}
public static void method(String pathSrc,String pathDest) throws IOException{
//封装了来源,获取了来源中的所有文件对象
File f = new File(pathSrc);
File[] files = f.listFiles();
//如果目的地的目录不存在则创建
File fileDest = new File(pathDest);
if(!fileDest.exists()){
fileDest.mkdir();
}
//遍历来源中的所有文件对象
for (File file : files) {
//如果是文件夹,则递归
if(file.isDirectory()){
//下级的目录名称是当前目的地目录名称加上,下一个的文件夹名称
method(file.getAbsolutePath(),pathDest + "\\" + file.getName());
}
else{
//如果是文件,则复制
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(pathDest + "\\" + file.getName()));
byte[] bys = new byte[1024];
int len = 0;
while((len = bis.read(bys)) != -1){
bos.write(bys,0,len);
}
bos.close();
bis.close();
}
}
}
}