永发信息网

java怎么多线程扫描磁盘

答案:3  悬赏:30  手机版
解决时间 2021-02-23 23:28
用java怎么实现扫描D盘所有文件,并筛选出所有视频文件?
最佳答案
import java.io.*;
public class Demo {
    public static void main(String[] args) throws Exception {
        System.out.println(Thread.currentThread().getName()+"抓取的内容:");
        getFiles(new File("E:\\aa"));
    }
    private static void getFiles(File pathName){
        File[] files = pathName.listFiles();
        for(File file : files){
            if(!file.isHidden() && file.isDirectory()){
                new Thread(){
                    public void run(){
                        getFiles(file);
                        System.out.println(Thread.currentThread().getName()+"抓取到的内容:");
                    }
                }.start();
            }else{
                        new FileFilter() {
                            public boolean accept(File pathname) {
                                //如果要抓取别的,可以修改.xx,我这里测试使用.txt
                                boolean flag = pathname.getName().endsWith(".txt");
                                if(flag){
                                    System.out.println("\t"+pathname);
                                }
                                return flag;
                            }
                        }.accept(file);
            }
        }
    }
}提示:我这程序一个文件夹一个线程,本身main方法是一个线程。
//测试结果:
main抓取的内容:
    E:\aa\aa1.txt
    E:\aa\复件 aa1.txt
    E:\aa\bb\复件 (2) bb2.txt
    E:\aa\bb\复件 (3) bb2.txt
    E:\aa\bb\复件 (4) bb2.txt
Thread-0抓取到的内容:
    E:\aa\复件 bb\bb1.txt
    E:\aa\复件 bb\bb2.txt
    E:\aa\复件 bb\复件 bb2.txt
Thread-1抓取到的内容:
全部回答
当调用object的wait()、notify()、notifyall()时,如果当前线程没有获得该对象锁,则会抛出illegalmonitorstateexception异常。 如果一个方法申明为synchronized,则等同于在这个方法上调用synchronized(this)。 如果一个静态方法被申明为synchronized,则等同于在这个方法上调用synchronized(类.class)。当一个线程进入同步静态方法中时,其他线程不能进入这个类的任何静态同步方法。 线程成为对象锁的拥有者: 通过执行此对象的同步实例方法 通过执行在此对象上进行同步的synchronized语句的正文 对于class类型的对象,可以通过执行该类的同步静态方法。 死锁: 死锁就是两个或两个以上的线程被无限的阻塞,线程之间相互等待所需资源。 可能发生在以下情况: 当两个线程相互调用thread.join(); 当两个线程使用嵌套的同步块,一个线程占用了另外一个线程必须的锁,互相等待时被阻塞就有可能出现死锁。 调用了thread类的start()方法(向cpu申请另一个线程空间来执行run()方法里的代码),线程的run()方法不一定立即执行,而是要等待jvm进行调度。 run()方法中包含的是线程的主体,也就是这个线程被启动后将要运行的代码。
为啥要用多线程? 是不是直接用File,区别视频文件还是以文件的后缀吧,把所有后缀为视频文件的文件找出来不就可以了?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
要么眼里就不揉沙子,要么就把沙子揉碎在眼睛
宝盖头什么意思
出口企业收到退税该怎么做凭证呢?
这个月的剩下几天几号是寅申日?
金刚狼前传里的死侍在废墟下,,此时他嘴上的
想买个和田玉手镯,哪里有卖的?
1岁以内小儿基础代谢所需的能量为A.55kcal/kg
求歌词:我是一粒米
泰拉瑞亚手机版,怎么打开工作台?
简衣铺在什么地方啊,我要过去处理事情
推荐几部热血动漫 人物一定要好看 最好是校园
财付通怎么登录
描写运动会上失败了却不放弃的诗句
为什么C中声明指针要在每个变量前面加星号
最能正确表示基因自由组合定律实质的是D
推荐资讯
米菲烘焙地址有知道的么?有点事想过去
商品流通企业在进行市场预测时,收集的数据和
我是妹妹,当我哥说话我不听的时候,他就打电
空调电机和主板坏了,维修要多少钱
信息发来说流量使用完了,然后夜间流量剩1000
电话被对方列入黑名单,我发短信,提示对方已
谁的鱼缸鱼池使用自动排污自动补
橄榄情服装店我想知道这个在什么地方
和兴五金交电商店在什么地方啊,我要过去处理
南北半球的季节不同【困扰我好久了】
Adobe Photoshop CS2怎样在图片中插入艺术字
请问复印机印出来的是全黑而且反面也有黑色脏
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?