java实现磁盘文件检索!

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.filechooser.FileSystemView;
class Threadsearch extends Thread{
	public String pathString;
	public Threadsearch(String pathString){
		this.pathString=pathString;
	}
	public void run() {
		super.run();
		SearchFilm sFilm = new SearchFilm();
		try {
			sFilm.serch(pathString);
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			System.out.println("共搜到: "+SearchFile.FileCount+"个文件!\n搜寻结束!");
		}
	}
	
}

public class SearchFile {
	public static int FileCount = 0;
	public static void main(String[] args) throws IOException {
		Threadsearch t1= new Threadsearch("F:/");
		Threadsearch t2= new Threadsearch("E:/");
		Threadsearch t3= new Threadsearch("D:/");
		t1.start();
		t2.start();
		t3.start();
	}
}
class SearchFilm {

	public void serch(String path) throws IOException {
		int i;
		File file = new File(path);
		File listFile[];
		if (!file.exists()) {
			System.out.println(path + "不存在!");
			return;
		}
		if (file.isDirectory()) {
			listFile = file.listFiles();
			for (i = 0; listFile != null && i < listFile.length; i++) {
				if (listFile[i].isFile()) {// 是文件筛选,其实应该有过滤器的,只是不懂用了这个不太好的办法
					if (listFile[i].getCanonicalPath().endsWith(".rmvb")
							|| listFile[i].getCanonicalPath().endsWith(".rm")
							|| listFile[i].getCanonicalPath().endsWith(".wmv")
							|| listFile[i].getCanonicalPath().endsWith(".avi")
							|| listFile[i].getCanonicalPath().endsWith(".mp4")) {
						writeData(listFile[i].getCanonicalPath());
						System.out.println("找到了: " + listFile[i].getCanonicalPath());
						SearchFile.FileCount++;
					}
				} else {// 是目录递归寻找!
					System.out.println("正在寻找: " + listFile[i].getCanonicalPath());
					serch(listFile[i].getCanonicalPath() + "/");
				}

			}
		}
	}

	/* 这个方法用来写入信息到桌面文件文件 */
	public synchronized void writeData(String str) throws IOException {
		FileWriter fw = null; // 用来写入文件

		FileSystemView fsv = FileSystemView.getFileSystemView();// 取桌面路径

		File f = new File(fsv.getHomeDirectory() + "/FilmList.txt");
		try {
			if (!f.exists()) {
				f.createNewFile();
			}
			fw = new FileWriter(f, true);// ture表示在后面追加一行!
			BufferedWriter out = new BufferedWriter(fw);
			out.write(str, 0, str.length()-1);
			out.newLine();
			out.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}
}


写个多线程搜索视频文件,在写入txt文件时出现乱码!可能是某些问题半角问题!

 

如果不是多线程码就没有事!

如下!

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.filechooser.FileSystemView;


public class SearchData {
	private static int FileCount = 0;
	public static void main(String[] args) throws IOException {
		serch("F:/");
		serch("E:/");
		serch("D:/");
		System.out.println("共搜到了" + FileCount + "个文件!");
	}
	
	public static void serch(String path) throws IOException{
		int i;
		File file = new File(path);
		File listFile[];
		if (!file.exists()) {
			System.out.println(path + "不存在!");
			return;
		}
		if (file.isDirectory()) {
			listFile = file.listFiles();
			for (i = 0; listFile != null && i < listFile.length; i++) {
				if (listFile[i].isFile()) {// 是文件筛选,其实应该有过滤器的,只是不懂用了这个不太好的办法
					if (listFile[i].getCanonicalPath().endsWith(".rmvb")
							|| listFile[i].getCanonicalPath().endsWith(".rm")
							|| listFile[i].getCanonicalPath().endsWith(".wmv")
							|| listFile[i].getCanonicalPath().endsWith(".avi")
							|| listFile[i].getCanonicalPath().endsWith(".mp4")) {
						writeData(listFile[i].getCanonicalPath());
						System.out.println("找到了: " + listFile[i].getCanonicalPath());
						FileCount++;
					}
				} else {// 是目录递归寻找!
					System.out.println("正在寻找: " + listFile[i].getCanonicalPath());
					serch(listFile[i].getCanonicalPath() + "/");
				}

			}
		}
	}

	/* 这个方法用来写入信息到文件 */
	public static void writeData(String str) throws IOException {
		FileWriter fw = null; // 用来写入文件

		FileSystemView fsv = FileSystemView.getFileSystemView();// 取桌面路径

		File f = new File(fsv.getHomeDirectory() + "/FilmList.txt");
		try {
			if (!f.exists()) {
				f.createNewFile();
			}
			fw = new FileWriter(f, true);// ture表示在后面追加一行!
			BufferedWriter out = new BufferedWriter(fw);
			out.write(str, 0, str.length());
			out.newLine();
			out.close();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}

	}

}


 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值