mg4377娱乐娱城官网_mg4377娱乐手机版_www.mg4377.com

一直从硬盘中检索并移除重复文件,用java8达成对

时间:2019-06-17 13:07来源:mg4377娱乐娱城官网
简介 对大家来讲,磁盘棉被服装满是无法子难题之一。无论我们怎样胆战心惊,大家总只怕将同一的文书复制到四个例外的位置,可能在不知情的景况下,重复下载了同一个文书。由此

简介

对大家来讲,磁盘棉被服装满是无法子难题之一。无论我们怎样胆战心惊,大家总只怕将同一的文书复制到四个例外的位置,可能在不知情的景况下,重复下载了同一个文书。由此,迟早你会看出“磁盘已满”的谬误提醒,若那时我们真正必要有些磁盘空间来储存主要数据,以上情况无疑是最不佳的。倘令你确信本人的体系中有再次文件,那么 dupeGuru 恐怕会辅助到您。

图片 1

dupeGuru 团队也支出了名字为 dupeGuru 音乐版一直从硬盘中检索并移除重复文件,用java8达成对重复文件的寻觅。 的选取来移除重复的音乐文件,和名称叫 dupeGuru 图片版 的利用来移除重复的图片文件。

问题

你想搜寻和(或)移除向量或列表里再次项。

因为spark的关系,前段时间在看scala,开掘这种函数式编制程序的措施,在管理数据是的确很便利,本想用python重写叁个去除重复文件的不二秘技。但查了刹那间,原生python里面接济的map,及 reduce等等,小编骨子里不敢恭维。于是练习一下java8 的新特征

1. dupeGuru (标准版)

急需告诉那么些不熟稔 dupeGuru 的人,它是二个免费、开源、跨平台的利用,其用途是在系统中找出和移除重复文件。它可以在 Linux, Windows, 和 Mac OS X 等平台下利用。通过行使叁个神速的模糊相称算法,它可以在几分钟内找到重复文件。同期,你还足以调整dupeGuru 使它去标准查找特定文件类型的再一次文件,以及从你想删除的文书中,清除某种文件。它协理越南语、 保加黎波里语、 葡萄牙共和国(República Portuguesa)语、 汉语 (简体)、 意大利语、 意大利共和国语、亚美尼亚语、乌克兰语、乌Crane语、巴西班牙语和斯洛伐克语。

方案

向量:

# 生成一个向量
set.seed(158)
x <- round(rnorm(20, 10, 5))
x
#>  [1] 14 11  8  4 12  5 10 10  3  3 11  6  0 16  8 10  8  5  6  6

# 对于每一个元素:它是否重复(第一个值不算)
duplicated(x)
#>  [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE
#> [15]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

# 重复项的值
# 注意“6”出现了三次,所以它有俩
x[duplicated(x)]
#> [1] 10  3 11  8 10  8  5  6  6

# 重复的条目,没有重复
unique(x[duplicated(x)])
#> [1] 10  3 11  8  5  6

# 移除重复的数据,他们效果一样:
unique(x)
#>  [1] 14 11  8  4 12  5 10  3  6  0 16
x[!duplicated(x)]
#>  [1] 14 11  8  4 12  5 10  3  6  0 16

列表:

# 一个样本列表:
df <- read.table(header=TRUE, text='
 label value
     A     4
     B     3
     C     6
     B     3
     B     1
     A     2
     A     4
     A     4
')


# 每一行是否有重复?
duplicated(df)
#> [1] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE

# 显示重复项
df[duplicated(df),]
#>   label value
#> 4     B     3
#> 7     A     4
#> 8     A     4

# 显示唯一重复项 (行名可能不同,但值相同)
unique(df[duplicated(df),])
#>   label value
#> 4     B     3
#> 7     A     4

# 移除重复的数据,他们效果一样:
unique(df)
#>   label value
#> 1     A     4
#> 2     B     3
#> 3     C     6
#> 5     B     1
#> 6     A     2
df[!duplicated(df),]
#>   label value
#> 1     A     4
#> 2     B     3
#> 3     C     6
#> 5     B     1
#> 6     A     2

最初的文章链接:http://www.cookbook-r.com/Manipulating_data/Finding_and_removing_duplicate_records/

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;


import static java.util.stream.Collectors.groupingBy;

public class FileDeletor {

    public static void main(String[] args) {
        File file = new File("/Users/zhipingwang/Downloads");

        Arrays.stream(file.listFiles())
                .flatMap(f -> listFile(f,new ArrayList<File>()))
                .collect(groupingBy(File::getName))
                .entrySet() //与scala比起来,java还是弱了很多,这里我只能重新把map变成Set,然后在进行Stream操作,不如scala一气呵成
                .stream()
                .filter(e -> e.getValue().size() > 1)
                .forEach(e-> System.out.println(e.getKey()));

    }

  /***
或许是更好的办法,我实在想不到,这里只能用了一个递归
**/
    public static Stream<File> listFile(File file, List<File> files) {

        if (file.isFile()) {
            files.add(file);
        } else {
          //这里应该也可能用Stream来操作的
            for (File mFile : file.listFiles())
                listFile(mFile, files);
        }
        return files.stream();

    }
}

在 Ubuntu 14.10/14.04/13.10/13.04/12.04 中安装 dupeGuru

dupeGuru 开荒者现已创设了多个 Ubuntu PPA (Personal Package Archives)来简化安装进程。想要安装 dupeGuru,依次在终点中键入以下命令:

  1. sudo apt-add-repository ppa:hsoft/ppa
  2. sudo apt-get update
  3. sudo apt-get install dupeguru-se

使用

选取非常轻巧,可从 Unity 面板或菜单中运维 dupeGuru。

图片 2

点击位于最底层的   按键来加多你想扫描的文件目录。点击 扫描 开关开端查找重复文件。

图片 3

假使所选目录中包罗重复文件,那么它将要窗口中体现重复文件。正如您所观察的,在下边包车型客车截图中,我的下载目录中有二个重复文件。

图片 4

明日,你能够决定下一步怎样操作。你能够去除那一个重复的文书,或许对它进行重命名,抑或是 复制/移动 到另多少个岗位。为此,选定该重复文件,或在菜单栏中选定写有“仅展现重复”选项 ,若是你挑选了“仅展现重复”选项,则只有重新文件在窗口中可知,那样您便能够轻便摘取并删除那些文件。点击“操作”下拉菜单,最后选项你将进行的操作。在这里,作者只想删除重复文件,所以自个儿选拔了“移动标志文件到垃圾箱”那几个选项。

图片 5

随即,点击“继续”选项来移除重复文件。

图片 6

编辑:mg4377娱乐娱城官网 本文来源:一直从硬盘中检索并移除重复文件,用java8达成对

关键词: 日记本 R