wallpaper视频一键转移

这篇具有很好参考价值的文章主要介绍了wallpaper视频一键转移。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能

将wallpaper目录下面的视频转移到自己所需的目录下面

使用

三个输入:

第一个是输入的wallpaper存放壁纸的地址

wallpaper怎么转移到另一个盘,java,jvm,开发语言

其中地址就为

E:\steam\Steam\steamapps\workshop\content\431960

如果不知道也可以右键壁纸查看

第二个输入的是下载的时间,

意思就是从哪个时间开始的壁纸,就比如2022-12-4-19-0,就会找12月4号下午七点以后下载的壁纸

第三个输入的是存放地址

这个就填要存放在哪里的地址。可以是电脑的,也可以把手机连上直接下载文章来源地址https://www.toymoban.com/news/detail-527844.html

所需依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

更新了方法

使用了线程池,线程池的数量等于cpu核处理速度最快

使用了Files.copy方法,使用该方法在复制小文件的过程中速度比BufferedInputStream更快

使用了synchronizedList来统计文件的个数,因为此集合是线程安全的。

package com.company;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;


import java.io.*;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.*;


public class WallPaper {

    private static final ExecutorService executor = Executors.newFixedThreadPool(6);

    public static void main(String[] args) throws ParseException, InterruptedException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
        List<String> list = Collections.synchronizedList(new ArrayList<String>());

        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入wallpaper下载的地址");
        String str = scanner.next();
        File sfile = new File(str);
        System.out.println("请输入时间(格式为:年-月-日-小时-分钟)");
        String time = scanner.next();
        Date date = sdf.parse(time);
        System.out.println("请输入需要存放的地址");
        String str2 = scanner.next();
        File tfile = new File(str2);
        if (!tfile.exists() && !tfile.isDirectory()) {
            tfile = new File(tfile.getParentFile(), "wallpaper下载的视频");
            System.out.println(tfile.getAbsolutePath());
            tfile.mkdirs();
        }

        if (!sfile.exists() && !sfile.isDirectory()) {
            System.out.println("地址不对哦");
            return;
        }
        if (sfile.isDirectory()) {
            File[] fs = sfile.listFiles();
            File finalTfile = tfile;
            int tmp = 0;

            assert fs != null;
            /**
             * *先统计文件的个数
             */

            for (File x : fs) {
                Date date1 = new Date(x.lastModified());
                if (date1.compareTo(date) > 0) {
                    boolean flag = false;
                    String needFilename = x.getAbsolutePath() + "\\project.json";
                    if (new File(needFilename).exists()) {
                        flag = isNeedFile(needFilename);
                    }
                    if (flag) {
                        tmp++;
                    }
                }
            }

            CountDownLatch cdl = new CountDownLatch(tmp);
            /**
             *多线程进行复制
             */
            Date startDate = new Date();
            for (File x : fs) {
                executor.submit(
                        () -> {
                            Date date1 = new Date(x.lastModified());
                            if (date1.compareTo(date) > 0) {
                                boolean flag = false;
                                String needFilename = x.getAbsolutePath() + "\\project.json";
                                if (new File(needFilename).exists()) {
                                    flag = isNeedFile(needFilename);
                                }
                                if (flag) {
                                    String filename = x.getAbsolutePath() + "\\" + Filename(needFilename);
                                    File tf = new File(finalTfile.getAbsoluteFile() + "\\" + Filename(needFilename));
                                    try {
                                        copyfile(new File(filename), tf);
                                        synchronized (list){
                                            list.add("成功");
                                        }
                                        System.out.println("将 " + Filename(needFilename) + "  复制到 " + finalTfile.getAbsolutePath() + " 中");
                                    } catch (IOException e) {
                                        e.printStackTrace();
                                        System.out.println(Filename(needFilename) + "复制失败");
                                    }

                                    cdl.countDown();
                                }
                            }
                        });
            }

            cdl.await();
            executor.shutdown();
            System.out.println("复制完成,共" + list.size() + "个文件");
            Date endDate = new Date();
            System.out.println(endDate.getTime()-startDate.getTime());
        }
        else {
            System.out.println("地址不对哦");
        }

    }

    //复制文件
    public synchronized static void  copyfile(File fs, File ft) throws IOException {

        if (ft.exists()) {
            System.out.println(ft.getName() + "重复...." + "正在删除");
            ft.delete();
        }
        Files.copy(fs.toPath(),ft.toPath(),StandardCopyOption.REPLACE_EXISTING);
//        FileInputStream fi = new FileInputStream(fs);
//        FileOutputStream fo = new FileOutputStream(ft);
//        BufferedInputStream bfi = null;
//        BufferedOutputStream bfo = null;
//        bfi = new BufferedInputStream(fi);
//        bfo = new BufferedOutputStream(fo);
//        int count = -1;
//        while ((count = bfi.read()) != -1) {
//            bfo.write(count);
//        }
//        bfo.flush();
//        bfo.close();
//        bfi.close();
    }


    //查找是否是所需的视频文件
    public static boolean isNeedFile(String filename) {

        String s = readJsonFile(filename);
        JSONObject jobj = JSON.parseObject(s);
        if (jobj.get("contentrating") != null && !jobj.get("contentrating").equals(""))
            return jobj.get("contentrating").toString().equals("Mature") && (jobj.get("type").toString().equals("Video") || jobj.get("type").toString().equals("video"));
        return false;
    }


    public static String Filename(String filename) {

        String s = readJsonFile(filename);
        JSONObject jobj = JSON.parseObject(s);
        return jobj.get("file").toString();
    }

    //读取json文件
    public static String readJsonFile(String fileName) {
        String jsonStr = "";
        try {
            File jsonFile = new File(fileName);
            FileReader fileReader = new FileReader(jsonFile);
            Reader reader = new InputStreamReader(new FileInputStream(jsonFile), "utf-8");
            int ch = 0;
            StringBuffer sb = new StringBuffer();
            while ((ch = reader.read()) != -1) {
                sb.append((char) ch);
            }
            fileReader.close();
            reader.close();
            jsonStr = sb.toString();
            return jsonStr;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }


}



到了这里,关于wallpaper视频一键转移的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx 把所有请求转发到另一个端口, 并添加header头,怎么配置

    要将nginx中的所有请求转发到另一个端口,可以使用nginx的 proxy_pass 指令来实现。以下是配置文件示例: 在上述配置中,我们创建了一个服务器块,并监听80端口,这是常见的HTTP请求端口。 server_name 指令用于指定该服务器块适用的域名,你需要将其替换为你的域名。 location

    2024年02月12日
    浏览(38)
  • 如何将 Windows 11/10 许可证转移到另一台 PC

    如果您最近购买了新的台式机或笔记本电脑,您可能希望在上面安装 Windows 11。对于某些用户来说,为新计算机购买新的 Windows 11 许可证可能会有点贵。 但是,如果您在旧计算机上安装了 Windows 11 并购买了一台新计算机来替换它,您应该知道可以将您的许可证转移到新计算机

    2024年02月04日
    浏览(111)
  • java 把文件从一个目录复制到另一个目录。

    方法一:简单粗暴,直接使用copy(),如果目标存在,先使用delete()删除,再复制; 方法二:使用输入输出流。(代码注释部分)

    2024年02月12日
    浏览(51)
  • java中将一个实体类复制到另一个实体类的三种方法

    这两天在做发票识别时,遇到一个问题,有一张发票表(假设为invoice_OCR_success)和一张我根据发票表新建的表(假设为invoice_OCR_fail),两张表有些字段名是相同的,有时需要把其中一张表的实例在另一张表里保存一份,此时就用到了实体类的复制,以下我将列出三种尝试的

    2024年02月13日
    浏览(49)
  • java将map中的值复制到另一个map中

    问题描述: 需要将一个sourceMap中设置的属性值copy到另一个targetMap中去,要求在sourceMap中没有设置的值,targetMap要保持不变,并且支持List中有Map的情况的复制。 **解决方案:**递归复制map中的值,List中如果是map的话则继续递归复制值。代码在最后面 sourceMap如下: targetMap如下

    2024年02月12日
    浏览(49)
  • 视频截取gif动画怎么操作?轻松一键快速视频转gif

    如何截取视频中的一段制作gif动画?当我们看到电影、电视剧等短视频中的某一个片段截取出来做成gif动画,应该如何操作呢?这时候,只需要使用gif制作(https://www.gif.cn/)工具,不用下载软件,在线就能完成视频转换成gif动图的操作,能够制作1分钟或是600帧以内的gif动画

    2024年02月07日
    浏览(39)
  • Python实现的《桌面视频壁纸程序 Mili Wallpaper》

    目录 安装方法: 使用方法 占时停止更新 Mili Wallpaper 现版本:1.5.54更新了相应的新功能,修改了很多BUG提高了程序的稳定性。让动态视频壁纸不再收费!达到了真正的白嫖! 之前版本的Mili Wallpaper只是一个死板的gui(tkinter实现)。现版本将Gui界面缩小,右键窗口菜单样式供用户

    2023年04月15日
    浏览(61)
  • 使用python下载wallpaper Engine订阅的壁纸/视频

      在游戏平台steam上,有一个壁纸软件wallpaper Engine,人称小红车,里面有各种好看的动态壁纸和视频,可以给我们的电脑设置动态桌面,非常好用。   用过几次后,我有了一些痛点,就是软件只能启动的时候才有这个桌面壁纸(当然这非常合理),但是我很喜欢这张壁纸

    2024年02月03日
    浏览(198)
  • 视频动态壁纸 Dynamic Wallpaper for Mac中文

    Dynamic Wallpaper是一款Mac平台上的动态壁纸应用程序,它可以根据时间等因素动态切换壁纸,提供更加生动和多样化的桌面体验。 Dynamic Wallpaper包含了多个动态壁纸,用户可以根据自己的喜好选择和切换。这些动态壁纸可以根据时间等因素进行自动切换,也可以手动进行切换。

    2024年02月10日
    浏览(66)
  • Java中将本服务器的文件拷贝到另一个服务器(Linux to Linux)

    在Java中,将文件从一个服务器复制到另一个服务器,你可以使用Secure Copy(SCP)进行操作。Java中的 JSch 库可以进行此操作。 首先,需要添加 JSch 库依赖到你的项目中。如果你使用的是Maven,可以添加以下依赖: 以下是一个使用 JSch 进行SCP操作的示例: 这段代码首先创建了一

    2024年02月13日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包