如何在JUnit的临时目录中添加文件

g6ll5ycj  于 2022-11-11  发布在  其他
关注(0)|答案(4)|浏览(118)

我发现了两种在JUnit中创建临时目录的方法。
方式一:

@Rule
public TemporaryFolder tempDirectory = new TemporaryFolder();

@Test
public void testTempDirectory() throws Exception {
    tempDirectory.newFile("test.txt");
    tempDirectory.newFolder("myDirectory");
    // how do I add files to myDirectory?
}

方法二:

@Test
public void testTempDirectory() throws Exception {
    File myFile = File.createTempFile("abc", "txt");
    File myDirectory = Files.createTempDir();
    // how do I add files to myDirectory?
}

正如上面的注解所提到的,我有一个需求,我想在这些临时目录中添加一些临时文件。
我该怎么做呢?

r3i60tvu

r3i60tvu1#

您可以像处理真实的文件夹一样执行此操作。

@Rule
public TemporaryFolder rootFolder = new TemporaryFolder();

@Test
public void shouldCreateChildFile() throws Exception {
    File myFolder = rootFolder.newFolder("my-folder");

    File myFile = new File(myFolder, "my-file.txt");
}
lmyy7pcs

lmyy7pcs2#

使用new File(subFolderOfTemporaryFolder,“fileName”)对我来说不起作用。调用subFolder.list()返回一个空数组。下面是我使它起作用的方法:

@Rule
public TemporaryFolder temporaryFolder = new TemporaryFolder();

@Test
public void createFileInSubFolderOfTemporaryFolder() throws IOException {
    String subFolderName = "subFolder";
    File subFolder = temporaryFolder.newFolder(subFolderName);
    temporaryFolder.newFile(subFolderName + File.separator + "fileName1");

    String[] actual = subFolder.list();

    assertFalse(actual.length == 0);
}
ruyhziif

ruyhziif3#

使用TemporaryFolder创建一个具有公共根目录的目录。创建文件夹后,可以通过指定目录结构和最终文件名作为名称来创建文件。

@Rule
public TemporaryFolder rootFolder = new TemporaryFolder();

@Test
public void shouldCreateChildFile() throws Exception {
    File myFolder = rootFolder.newFolder("my-folder");
    File myFileInMyFolder = rootFolder.newFile("/my-folder/my-file.txt");
}

您可以用相同的方法创建子目录。

pprl5pva

pprl5pva4#

有两种方法可以删除临时目录或临时文件。第一种方法是手动删除目录或文件,使用file.delete()方法。第二种方法是在程序存在时删除临时目录或文件。deleteOnExist()。你可以试试这个,我打印控制台的路径,你可以检查是否真的删除了,我在windows7系统上测试。

File myDirectory = Files.createTempDir();
File tmpFile = new File(myDirectory.getAbsolutePath() + File.separator + "test.txt");
FileUtils.writeStringToFile(tmpFile, "HelloWorld", "UTF-8");
System.out.println(myDirectory.getAbsolutePath());
// clean
tmpFile.delete();
myDirectory.deleteOnExit();

相关问题