Java 将内容写入临时文件夹并在测试后删除文件
我正在尝试将一些字符串写入由TemporaryFolder创建的文件。 我需要提供3个字符串: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
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
我尝试刷新对文件的每一次写入,但什么也没有发生。