java实现pc机上文件的查找
来源:互联网 发布:it工程 编辑:程序博客网 时间:2024/04/29 03:42
文件查找可以说是一个常用操作,下面来介绍一下文件查找的思路。
1.文件名的匹配,需要用到Pattern类和Matcher对象来完成正则表达式的匹配。
2.文件的树状层次结构需要用递归算法来查找。
3.文件的输出结果需要用文件输出流输出到硬盘的一个文件上。
1.Pattern类和Matcher对象的使用
如果使用了第版本的eclipse,可能无法找到Pattern类的complie方法,如下:
原因是eclipse的版本太低!打开eclipse安装目录下的readme文件,当前版本是:
换了个高版本的eclipse可以解决问题。
关于正则表达式,读者可以查找相关的文档,在此不再赘述。
项目中要匹配某文件结尾的几个字符,因此正则表达式可以这样写:Pattern pattern = Pattern.compile("^*.mp3$",Pattern.CASE_INSENSITIVE);
compile的第一个参数填写正则表达式,^*.mp3$是以.mp3结尾的意思,如果需要查找多种文件类型,可以用 | 符号隔开(如:“A|B”是即满足A又满足B的意思);第二个参数填写匹配的一些规则,CASE_INSENSITIVE的意思是不区分大小写。
2.递归调用遍历整个文件
public static void findFiles(String string){
File file = new File(string);
if(file.isFile()){//叶节点
输出文件
}
否则读取文件夹中的每个文件,并对每个文件进行findFiles操作。
}
3.文件的输出流操作
第一步:新建一个文件
File file = new File("H:/newfile.txt");(读者可以根据自己计算机上的分盘情况自行更改)
第二步:新建一个指向该文件的文件输出流
fop = new FileOutputStream(file);
第三步:对文件流进行读和刷新操作
fop.write(inBytes);
fop.flush();
第四步:关闭文件流
fop.close();
对于文件流的创建和关闭操作需要添加响应的异常处理。
还有一点要主要,如果要输出换行符,须在string后面加上“/r/n”(回车换行)!
好了,所有的步骤都介绍完,下面是完整的代码:
package pattern;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.regex.Matcher;import java.util.regex.Pattern;public class hello {static FileOutputStream fop=null;public static void main(String[] args) {File xx=new File("D:");try {File file = new File("H:/newfile.txt");fop = new FileOutputStream(file);} catch (Exception e) {System.out.println("打开文件出错!");}String [] gg=xx.list();for(int i=0;i<gg.length;i++){findFiles("D:"+"/"+gg[i]);}try {fop.close();} catch (IOException e) {e.printStackTrace();System.out.println("文件关闭错误!");}}//string为当前文件的字符串public static void findFiles(String string){File file = new File(string);try {if(file.isFile()){//叶节点//输出if(accept(string)){System.out.println(string);string = string+"\r\n"; //加换行符byte[] inBytes = string.getBytes();try {fop.write(inBytes);fop.flush();} catch (Exception e) {e.printStackTrace();System.out.println("文件写入错误!");}}}String[] strings = file.list();for(int i=0;i<strings.length;i++){//遍历以string为路径中的每个文件String currentString=string+"/"+strings[i];File currentFile = new File(currentString);findFiles(currentString);}} catch (Exception e) {return;}}public static boolean accept(String string){Pattern pattern = Pattern.compile("^*.mp3$",Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(string);if(matcher.find())return true;return false;}}
- java实现pc机上文件的查找
- JAVA中使用FTPClient实现FTP上文件的操作
- JAVA调用FTPClient实现FTP上文件的操作
- JAVA中使用FTPClient实现FTP上文件的操作
- 网页上文件下载功能的实现
- VM虚拟机上安装Eclipse和Hadoop上文件命令操作的java代码实现
- java 操作 HDFS上文件
- java删除服务器上文件
- linux(NFS)上文件或者目录共享的实现
- 使用SFTP实现Linux上文件上传下载
- HDFS上文件处理、Java文件读写
- 增加SVN上文件的可执行权限
- AIX上文件服务的NFS配置
- 修改HDFS上文件的权限
- 关于linux上文件路径的问题
- 实现windows系统和虚拟机VMware上linux系统上文件的互传
- HDFS简单运用--实现文件系统上文件的增删查下载上传
- java的jap页面上文件上传,所需jar包:jspSmartUpload.jar
- Contrib_1_Retina模块
- 弗洛伊德算法精解与模板
- 【每日收获2】
- 喜马拉雅音频解析插件
- 开发工具使用问题汇总 editPlus,Eclipse、SourceTree、Git、
- java实现pc机上文件的查找
- Struts实现图片上传
- HDU 5776 BestCoder Round #85 sum (数学)
- poj 2229 Sumsets 完全背包
- C# SuperWebSocket服务端学习(二)
- service跨进程远程通讯
- 2016/07/31 安装cocoapods 失败 原因:ruby 环境版本必须大雨2.2 --> 更新到2.3后重新安装
- Matlab 2016a和VS2013混合Dll编程步骤
- 365. Water and Jug Problem