Java I/O递归查找文件
来源:互联网 发布:linux默认安装目录 编辑:程序博客网 时间:2024/05/16 16:59
今天老板突然吩咐一个任务给我,把公共盘的资料整理一遍,我问要怎么整,他说把大于1g的文件都找出来,,,,,我这时有千万个草泥马在心中奔驰而过,但没办法,总不能拒绝老板的要求啊。
一想到我最近不是在学java吗,于是就写了下面的一个小程序(勉强能看),轻松解决了老板这个特殊“任务”!
PS:楼主目前还是一位机械狗,正在学习java准备转行!
package ioStream;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.util.ArrayList;public class FileChaxun { public static void main(String[] args) throws Exception { findFiles("X:\\10 Department Management 部门管理\\ENG 工程部"); findMaxFiles("X:\\10 Department Management 部门管理\\ENG 工程部"); } //查找文件,并把文件路径、文件名称、文件大小写进files.txt中 public static void findFiles(String filePath) throws Exception { File div=new File(filePath); ArrayList<File> fileList = new ArrayList<File>(); fileToList(div,fileList); File fileName=new File(div,"files.doc"); fileToWrite(fileList,fileName); } //查找大于1024MB的文件,并把文件路径、文件名称、文件大小写进maxFiles.txt中 public static void findMaxFiles(String filePath) throws Exception { File div=new File(filePath); ArrayList<File> maxFileList = new ArrayList<File>(); fileToList(div,maxFileList); File maxfliesName=new File(div,"maxFiles.doc"); maxFileToWrite(maxFileList,maxfliesName); } //递归,把文件对象写进一个集合中 private static void fileToList(File div, ArrayList<File> fileList) { File[] filesArr=div.listFiles(); for(File f:filesArr){ if(f.isDirectory()){ fileToList(f,fileList); } fileList.add(f); } } //把文件路径、文件名称、文件大小写进files.txt中 private static void fileToWrite(ArrayList<File> fileList, File fileName) throws Exception { BufferedWriter bufferedWriter= new BufferedWriter(new FileWriter(fileName)); for(File f:fileList){ long fileLenth=f.length()/1024/1024; if(fileLenth!=0){ bufferedWriter.write("-------------------------------------------------------------"); bufferedWriter.newLine(); bufferedWriter.write("文件路径:"+f.getParent()+" "+"文件名称:"+ f.getName()+"---文件大小:"+fileLenth+"MB"); bufferedWriter.newLine(); bufferedWriter.flush(); } } bufferedWriter.close(); } //把大于1024MB的文件路径、文件名称、文件大小写进maxFiles.txt中 private static void maxFileToWrite(ArrayList<File> maxFileList, File maxfliesName) throws Exception{ BufferedWriter bufferedWriter= new BufferedWriter(new FileWriter(maxfliesName)); for(File file:maxFileList){ long mb=1024; long fileLength=file.length()/1024/1024; if(fileLength>mb){ bufferedWriter.write("-------------------------------------------------------------"); bufferedWriter.newLine(); bufferedWriter.write("文件路径:"+file.getParent()+" "+"文件名称:"+ file.getName()+"---文件大小:"+fileLength+"MB"); bufferedWriter.newLine(); bufferedWriter.flush(); } } bufferedWriter.close(); }}
在原有基础上,对代码进行了精简,并增加了多线程,搜起来爽歪歪有木有!
package io;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;public class FindFilesThread { public static void main(String[] args) throws Exception { Runnable findFiles=new FindFiles("X:\\10 Department Management 部门管理\\GM 总经办"); Runnable findFiles2=new FindFiles("X:\\10 Department Management 部门管理\\ENG 工程部"); new Thread(findFiles).start(); new Thread(findFiles2).start(); }}class FindFiles implements Runnable{ private String filePath=null; public FindFiles(String filePath) { this.filePath=filePath; } @Override public void run() { File div=new File(filePath); ArrayList<File> fileList = new ArrayList<File>(); filesToList(div,fileList); File fileName=new File(div,"files.doc"); File maxfliesName=new File(div,"maxFiles.doc"); try { filesToWrite(fileList,fileName,maxfliesName); } catch (Exception e) { e.printStackTrace(); } } //递归,把文件对象写进一个集合中 private static void filesToList(File div, ArrayList<File> fileList) { File[] filesArr=div.listFiles(); for(File f:filesArr){ if(f.isDirectory()){ filesToList(f,fileList); } fileList.add(f); } } //遍历集合,把文件信息写进磁盘 private static void filesToWrite(ArrayList<File> fileList, File fileName,File maxfliesName) throws Exception { BufferedWriter filesWriter= new BufferedWriter(new FileWriter(fileName)); BufferedWriter maxFileWriter= new BufferedWriter(new FileWriter(maxfliesName)); for(File f:fileList){ long fileLenth=f.length()/1024/1024; if(fileLenth>0&&fileLenth<1024) writer(f,filesWriter,fileLenth); if(fileLenth>1024){ writer(f,maxFileWriter,fileLenth); } } filesWriter.close(); maxFileWriter.close(); } private static void writer(File f,BufferedWriter buff,long fileLenth) throws IOException { buff.write("-------------------------------------------------------------"); buff.newLine(); buff.write("文件路径:"+f.getParent()+" "+"文件名称:"+ f.getName()+"---文件大小:"+fileLenth+"MB"); buff.newLine(); buff.flush();}}
再想了想,决定弄个内部类来玩玩,
package io;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.ArrayList;public class FindFilesIn { public Runnable findFilesByRunnable(String filePath){ return new FindFiles(filePath); } private class FindFiles implements Runnable{ private String filePath=null; public FindFiles(String filePath) { this.filePath=filePath; } @Override public void run() { File div=new File(filePath); ArrayList<File> fileList = new ArrayList<File>(); filesToList(div,fileList); File fileName=new File(div,"files.doc"); File maxfliesName=new File(div,"maxFiles.doc"); try { filesToWrite(fileList,fileName,maxfliesName); } catch (Exception e) { e.printStackTrace(); } } //递归,把文件对象写进一个集合中 private void filesToList(File div, ArrayList<File> fileList) { File[] filesArr=div.listFiles(); for(File f:filesArr){ if(f.isDirectory()){ filesToList(f,fileList); } fileList.add(f); } } //遍历集合,把文件信息写进磁盘 private void filesToWrite(ArrayList<File> fileList, File fileName,File maxfliesName) throws Exception { BufferedWriter filesWriter= new BufferedWriter(new FileWriter(fileName)); BufferedWriter maxFileWriter= new BufferedWriter(new FileWriter(maxfliesName)); for(File f:fileList){ long fileLenth=f.length()/1024/1024; if(fileLenth>0&&fileLenth<1024) writer(f,filesWriter,fileLenth); if(fileLenth>1024){ writer(f,maxFileWriter,fileLenth); } } filesWriter.close(); maxFileWriter.close(); } private void writer(File f,BufferedWriter buff,long fileLenth) throws IOException { buff.write("-------------------------------------------------------------"); buff.newLine(); buff.write("文件路径:"+f.getParent()+" "+"文件名称:"+ f.getName()+"---文件大小:"+fileLenth+"MB"); buff.newLine(); buff.flush(); } }}
调用
package io;public class FindFilesDemo {public static void main(String[] args) throws Exception { FindFilesIn findFilesIn=new FindFilesIn(); Runnable findFiles=findFilesIn.findFilesByRunnable("E:\\视频"); Runnable findFiles2=findFilesIn.findFilesByRunnable("E:\\下载"); new Thread(findFiles).start(); new Thread(findFiles2).start(); }}
0 0
- Java I/O递归查找文件
- Java 文件I/O
- java文件I/O
- Java I/O 递归方式删除目录
- java I/O 读取文件
- Java文件I/O操作
- java API 文件,I/O
- Java中的文件I/O
- java I/O 读写文件
- java I/O复制文件
- Java 文件和 I/O
- 查找程序根目录下所有文件-Java i/o与ListActivity
- 我的java学习路之I/O流学习应用查找文件
- I/O接口递归
- java I/O:文件的随机存取
- Java 对文件的I/O操作
- java 读写文件(I/O)
- java I/O 数据流 文件上传
- 基于Web的APP开发 (Ionic初次尝试)
- Webservice开发使用ksoap2.jar包在小米2S报jar包冲突解决方案
- 04-自创Server服务器
- 浅谈web网站架构演变过程
- 杂花生树(二十四)
- Java I/O递归查找文件
- 物联网相关的嵌入式操作系统
- CodeForces 185D
- bzoj 2084: [Poi2010]Antisymmetry (hash+二分)
- AIDL_android接口定义语言_IPC_实现远程访问其他程序的服务
- Qbxt 模拟赛&&day-8
- Application中ActivityLifecycleCallbacks的原理分析
- Velocity配置详解
- javascript第三章