- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在一个名为 Test.java 的类中有这个函数,它包括;
public List<Path> getAllFoldersInTmp(String directory) throws IOException {
final List<Path> files = new ArrayList<>();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(Path.of(directory))) {
for (Path entry : stream) {
if (Files.isDirectory(entry)) {
files.add(entry);
}
}
}
return files;
}
所以基本上它将所有文件夹作为“../../tmp”路径中的列表返回。我想为它编写一个测试,这就是我所做的,但它不起作用:
import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import org.junit.jupiter.api.Test;
class Testing{
@Autowired
Test test;
@TempDir
Path directory;
@Test
public void givenDir_whenUsingDirectoryStream_thenListAllFiles() throws IOException {
File fileOne = directory.resolve("file1").toFile();
File fileTwo = directory.resolve("file2").toFile();
System.out.println(test.getAllFoldersInTmp("../../Temp")); //since the fileone and fileTwo are stored in `Temp/someRandomNumber` directory
}
}
我收到以下错误;
..\..\Temp
java.nio.file.NoSuchFileException: ..\..\Temp
最佳答案
使用时@TempDir
您可以不使用某些特定的硬编码路径(例如,片段中的 "../../Temp"
)。
基本上,临时目录会由 junit
自动为您创建。 .然后在测试中,您可以按照您想要的方式操作它,例如创建文件和目录。
如果您需要获取临时目录路径的值,您可以简单地调用 toString()
在用 @TempDir
注释的字段上.
例如,对于您的特定情况,可以编写以下测试:
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
class FoldersResolverTest {
@TempDir
Path directory;
// assume FoldersResolver wrapps getAllFoldersInTmp
FoldersResolver foldersResolver = new FoldersResolver();
@Test
void directoriesAreFoundAndFilesAreSkipped() throws IOException {
Path fileOne = directory.resolve("file1");
Path fileTwo = directory.resolve("file2");
Path directoryOne = directory.resolve("directory1");
Path directoryTwo = directory.resolve("directory2");
Files.createFile(fileOne);
Files.createFile(fileTwo);
Files.createDirectory(directoryOne);
Files.createDirectory(directoryTwo);
// note directory.toString() returns path to the temporary folder created by junit
List<Path> actual = foldersResolver.getAllFoldersInTmp(directory.toString());
List<Path> expected = List.of(directoryOne.getFileName(), directoryTwo.getFileName());
assertEquals(expected, actual);
}
}
注:一般来说,
@TempDir
使用
默认系统临时文件目录是的这取决于操作系统,通常可以通过环境变量找到。例如,
TMPDIR
在我的系统上指向
/tmp
目录。
关于java - 如何为 DirectoryStream 编写 junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64444434/
DirectoryStream stream = Files.newDirectoryStream( DirectoryPath, ".txt" ); 我有一个目录流,其中保存在指定目录路径中找到的所
我想显示特定文件夹中的所有文件扩展名,并使用 DirectoryStream 给出每个扩展名的总数。 现在我只显示该文件夹中的所有文件,但我如何才能只显示它们的扩展名呢?我还应该获取这些文件的扩展名,
DirectoryStream的文档中明确指出: The iterator is weakly consistent. It is thread safe but does not freeze th
我对 DirectoryStream 有疑问.我目前尝试为我的应用程序构建一个 LogViewer,它应该遍历目录中的所有文件并将它们添加到网格中。 出于测试目的,它目前只包含一个文件。 代码如下:
读取 DirectoryStream 的 API 时我错过了很多功能。首先,它建议使用 for 循环从流转到 List。 .我想念它是 DirectoryStream不是 Stream . 如何制作
我想使用 java 8 DirectoryStream 来查找与 glob 模式匹配的文件,但我想在 Groovy 中执行此操作(至少 2.4)。不过,我很难找到如何做到这一点的示例,因为 groov
我正在尝试使用 NIO 类过滤隐藏文件。 当我在 Windows 10 上运行附加的代码时,我得到以下输出: Files: c:\Documents and Settings
我有以下代码: Map fileContentsByName = new HashMap(); try (DirectoryStream directoryStream
我已经对 Streams 进行了一些测试,特别是对 nio-package 的 DirectoryStreams 进行了测试。我只是尝试获取按上次修改日期和大小排序的目录中所有文件的列表。 旧 Fil
我在一个名为 Test.java 的类中有这个函数,它包括; public List getAllFoldersInTmp(String directory) throws IOException {
在列出目录中的文件时,我注意到一个奇怪的行为。我的情况是我有一个保存在数据库中的txt文件列表,与这些数据文件相对应的是xml文件,其中包含每个txt的一些标签,这些标签与其在db中的元属性相关联。
这段代码可以变成lambda表达式吗?我尝试了很多,但我没有得到它。 DirectoryStream.Filter dirFilter = new DirectoryStream.Filter() {
虽然我已经看到了很多类似问题的答案,但我无法使以下代码按我认为应该的方式工作: File dataDir = new File("C:\\User\\user_id"); PathMatcher pa
我正在尝试研究 newDirectoryStream 的 DirecoryStream.Filter 示例,我可以在其中列出目录下的所有文件(及其所有子目录) 超过 60 天,例如。 Director
我想列出指定目录中的所有文件以及该目录中的子目录。不应列出任何目录。 我当前的代码如下。它不能正常工作,因为它只列出指定目录中的文件和目录。 我该如何解决这个问题? final List files
DirectoryStream 和 File.list() 在性能上有区别吗 我曾尝试在 Linux 平台上跟踪这两个 java 程序,它使用具有相同参数的 getdents64 系统调用。在我看来两
DirectoryStream的唯一用法我见过的使用类型 Path作为其类型参数,DirectoryStream来自Files.newDirectoryStream(Path) . 此外,由于 doc
所以我“听说”Java 7 中引入的 DirectoryStream 比传统的目录列表方法更快。然而,对我来说情况并非如此。列出整个目录可能会更快,但是当过滤掉文件并仅接受文件夹时,需要更多时间。例如
我想返回路径流(这些是位于某个目录中的文件)。我最初的方法是这样的: DirectoryStream getFiles(Path dir) throws IOException { Files
我是一名优秀的程序员,十分优秀!