标签: filetree

最短的操作序列,将文件树转换为另一个文件树

给定两个文件树A和B,是否可以确定最短的操作序列或为了将A转换为B所必需的短序列操作

操作可以是:

  1. 创建一个新的空文件夹
  2. 使用任何内容创建新文件
  3. 删除文件
  4. 删除一个空文件夹
  5. 重命名文件
  6. 重命名文件夹
  7. 将文件移动到另一个现有文件夹中
  8. 在另一个现有文件夹中移动文件夹

当A和B在相同的文件夹结构中具有相同内容(或相同大小相同CRC)和相同名称的相同文件时,它们是相同的.

这个问题一直困扰着我.目前我有以下基本想法:

  • 计算数据库:
    • 存储文件名及其CRC
    • 然后,查找没有子文件夹的所有文件夹,并从它们包含的文件的CRC计算CRC,并从它们包含的文件的总大小计算大小
    • 升级树以为每个父文件夹创建CRC
  • 使用具有数据库A和数据库B的以下循环:
    • 计算A∩B并从两个数据库中删除此交集.
    • 使用内部联接在A和B中查找匹配的CRC,首先按文件夹desc排序
    • 当有结果时,使用第一个结果使文件夹或文件移动(如果需要可能创建新文件夹),从两个数据库中删除结果的源行.如果有移动,则更新db A中新位置的父文件夹的CRC.
    • 然后删除数据库A中引用的所有文件和文件夹,并创建数据库B中引用的那些

但是我认为这实际上是一种不理想的方式.你能给我什么建议?

谢谢!

algorithm edit-distance filetree

16
推荐指数
1
解决办法
657
查看次数

如何使用Gradle获取文件和目录名称?

我有dir,其中另一个任务创建文件和目录所以在这个目录中有文件,目录,子目录,文件,等等.我想把所有文件目录的绝对路径放在一个列表中.

def listNames = project.fileTree('dir')
Run Code Online (Sandbox Code Playgroud)

但只有文件包含在列表中,目录丢失.如何收集所有这些?

directory file task gradle filetree

16
推荐指数
2
解决办法
2万
查看次数

Gradle - 如何仅针对特定类型的文件在 fileTree 中迭代

在我的 gradle 任务中,我遍历 fileTree 并且一切正常:

myTask {
  fileTree("${project.projectDir}/dir").visit { FileVisitDetails details ->
    exec {
      //do some operations
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但现在我的目录中有不同类型的文件:

dir
??? sub1
?   ??? file1.json
?   ??? file2.js
??? sub2
?   ??? file1.json
?   ??? file2.js
??? sub3
    ??? file1.js
    ??? file2.json
Run Code Online (Sandbox Code Playgroud)

如何仅迭代某些类型的文件?因为

"${project.projectDir}/folder/dir/**/*.json"
Run Code Online (Sandbox Code Playgroud)

不起作用。

感谢您的任何建议

gradle filetree

6
推荐指数
1
解决办法
3327
查看次数

角材料平树父级儿童图形表示

我想在“角材料平面树”上显示“父级子级”图形表示。

这是设计:

在此处输入图片说明

这是我到目前为止所做的演示

filetree angular angular-tree-component

6
推荐指数
1
解决办法
220
查看次数

从Gradle中的FileTree中排除文件

我想从src中排除src\mainsrc\test文件

FileCollection files = 
project.fileTree(/src/).minus(project.fileTree(/src\main/)).minus(project.fileTree(/src\test/))
Run Code Online (Sandbox Code Playgroud)

如何在没有双减去用法的情况下排除此目录?

directory filter gradle filetree

5
推荐指数
1
解决办法
1万
查看次数

Monticello - 在一次提交中保存到Squeaksource和Filetree

我想要的是一次将一个包或一组包提交到两个存储库,如果可能的话,使用相同的版本号,因此一个repo可以是另一个的镜像.

是否有可能使用Gofer?

smalltalk pharo filetree

4
推荐指数
1
解决办法
167
查看次数

如何为Gradle文件集合中的每个文件执行shell命令?

我最近被指示在Gradle中实现所有构建/发布工程作业.

所以我是Gradle的新手,在这个勇敢的新世界中,一些在shell提示下显而易见的东西很难理解.

我的构建创建了一组jar文件.

我需要为每个人执行一个shell任务

类似的东西:

task findBugs (type:Exec, dependsOn:  fb23) {commandLine 'java', '-jar',
'./findBugs/findbugs.jar',  '-textui', '-progress', '-xml', '-output',
'TrustManagerService.xml', 'TrustManagerService.jar'}
Run Code Online (Sandbox Code Playgroud)

(我不能使用FindBugs插件,因为我们在JDK8中 - 所以我从预览版本外部运行FindBugs ......)

我可以得到一个文件集合,并用以下内容迭代文件名:

FileTree iotTree = fileTree(dir: '.')
iotTree.include '*.jar'
iotTree.each {
File file -> println file.name
println 'A file'
}
Run Code Online (Sandbox Code Playgroud)

要么

def iotJars = files(file('./jars').listFiles())
println ''
println iotJars
iotJars.each { File file -> println 'The next file is: ' + file.name }
Run Code Online (Sandbox Code Playgroud)

但是对于我的生活,我无法看到如何为返回的每个文件名执行shell命令...

关于这种最直接的方法的想法?

顺便说一句 - 什么是在代码清单中包含换行符的最佳方式 - 我必须返回并向每行添加CR以使它们断开...... :(

iteration shell gradle filetree

2
推荐指数
1
解决办法
7589
查看次数

Gradle 复制任务第一次不从临时文件夹复制文件

我有一个运行这样的任务的构建文件。

任务 1 ( unpackWar):将 war 文件解压缩到 Temp 文件夹

任务 2 ( copyWarFilesToWebContent):将文件复制到 WebContent 文件夹,但有一些排除项

任务 3 ( copyRequiredJarFilesToWebContent):将几个 jar 文件从 Temp/WEB-INF/lib 解压到 TempJarDir

任务 4 ( explodeProductJars):将我们想要的文件从 TempJarDir 复制到 WebContent 文件夹

有一个准备任务使用dependsOn 运行这些任务中的每一个,我已经向每个任务添加了mustRunAfter 命令,以便它们按顺序执行。还为每个任务设置 upToDateWhen = false。

似乎发生的是任务 1 运行良好并解压缩了战争。然后,任务 2 使用来自 Temp 的文件并将所需的文件正确添加到 WebContent。

任务 3 和任务 4 总是以最新状态返回,因为在指定的目录中似乎没有文件可以使用。

如果我在 Temp 文件夹存在时重新运行准备,任务 3 和 4 将正确运行。

我不确定这是由于 fileTree 的工作方式还是我做错了什么。大约一周前,我开始学习 gradle 并且仍在掌握它。

任务如下所示:

task prepare(dependsOn: ['unpackWar', 'copyWarFilesToWebContent', 'copyRequiredJarFilesToWebContent'])
prepare.outputs.upToDateWhen {false}



task …
Run Code Online (Sandbox Code Playgroud)

copy temp gradle filetree

2
推荐指数
1
解决办法
1709
查看次数