Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将内容写入临时文件夹并在测试后删除文件_Java_Junit_Temporary Files - Fatal编程技术网

Java 将内容写入临时文件夹并在测试后删除文件

Java 将内容写入临时文件夹并在测试后删除文件,java,junit,temporary-files,Java,Junit,Temporary Files,我正在尝试将一些字符串写入由TemporaryFolder创建的文件。 我需要提供3个字符串: line1a 线路2 b c 第3行 1) 我做了这个,但它没有添加任何内容。testedContent的长度仍然为0。我做错了什么 private ContentFileRetriever contentFileRetriever = new ContentFileRetrieverService(); @Rule public TemporaryFolder tempFolder

我正在尝试将一些字符串写入由TemporaryFolder创建的文件。 我需要提供3个字符串:
line1a
线路2 b c
第3行

1) 我做了这个,但它没有添加任何内容。
testedContent
的长度仍然为0。我做错了什么

private ContentFileRetriever contentFileRetriever = new ContentFileRetrieverService();

    @Rule
    public TemporaryFolder tempFolder = new TemporaryFolder();

    @Before
    public void setup() {
    }

    @Test
    public void getContentFile() throws IOException {
        File textFile = tempFolder.newFile("testText.txt");
        String pathFile = textFile.getPath();
        FileWriter fileWriter = new FileWriter(textFile.getName());
        fileWriter.write("Line1 a");
        fileWriter.write("Line2 b c");
        fileWriter.write("Line3 3");
        String[] testedContent = contentFileRetriever.getContentFile(pathFile);
        String[] expected = {"Line1 a", "Line2 b c", "Line 3"};
        assertArrayEquals(expected, testedContent);
    }
2) 我应该在设置中使用
@Before
方法还是在内部测试中执行

3) 我了解到此文件夹将自动删除,因此我不需要对
文本文件执行
.deleteOnExit()

我发现两个问题:

  • 使用文件名而不是文件本身打开FileWriter对象
  • 您没有关闭FileWriter
  • 这对我很有用:

      @Test
      public void getContentFile() throws IOException {
        File textFile = tempFolder.newFile("testText.txt");
        FileWriter fileWriter = new FileWriter(textFile);
        fileWriter.write("Line1 a");
        fileWriter.write("Line2 b c");
        fileWriter.write("Line3 3");
        fileWriter.close();
      }
    

    尝试刷新writer并使用OutputStreamWriter@ValentinCarnu添加了
    fileWriter.flush()
    文件编写器之前和之后写入(“line1a”)但长度仍然为0。请尝试使用
    文件
    对象作为构造函数参数创建
    FileWriter
    ,然后在读取文件之前刷新并关闭它。`。第二件事是使用
    textFile.getAbsolutePath()调用
    contentFileRetriever.getContentFile
    方法
    作为参数而不是
    textFile.getPath()
    我已经完成了:并且我已经
    testedContent.length=1
    我尝试刷新对文件的每一次写入,但什么也没有发生。