Create path to text file being created 17/100617/1
authorliamfallon <liam.fallon@est.tech>
Wed, 22 Jan 2020 17:51:26 +0000 (17:51 +0000)
committerliamfallon <liam.fallon@est.tech>
Wed, 22 Jan 2020 17:51:30 +0000 (17:51 +0000)
If you try and write to a file where part of the pat does not exist,
that path should be created.

Issue-ID: POLICY-1581
Change-Id: Ifb7a4ff4e1804814b6679956f0c58d5ac026c4a4
Signed-off-by: liamfallon <liam.fallon@est.tech>
utils/src/main/java/org/onap/policy/common/utils/resources/TextFileUtils.java
utils/src/test/java/org/onap/policy/common/utils/resources/TextFileUtilsTest.java

index 5aeacf2..01af7fd 100644 (file)
@@ -62,6 +62,10 @@ public abstract class TextFileUtils {
      */
     public static void putStringAsTextFile(final String outString, final String textFilePath) throws IOException {
         final File textFile = new File(textFilePath);
+        if (!textFile.getParentFile().exists()) {
+            textFile.getParentFile().mkdirs();
+        }
+
         putStringAsFile(outString, textFile);
     }
 
index 7f246ab..0952b16 100644 (file)
@@ -30,6 +30,7 @@ import org.junit.Test;
 
 /**
  * Test text file utilities.
+ *
  * @author Liam Fallon (liam.fallon@est.tech)
  */
 public class TextFileUtilsTest {
@@ -37,7 +38,7 @@ public class TextFileUtilsTest {
     private static final String FILE_CONTENT = "This is the contents of a text file";
 
     @Test
-    public void test() throws IOException {
+    public void testPutToFile() throws IOException {
         final File tempTextFile = File.createTempFile("Test", "txt");
 
         TextFileUtils.putStringAsTextFile(FILE_CONTENT, tempTextFile.getAbsolutePath());
@@ -48,6 +49,25 @@ public class TextFileUtilsTest {
         final FileInputStream fis = new FileInputStream(tempTextFile);
         final String textFileString1 = TextFileUtils.getStreamAsString(fis);
         assertEquals(textFileString0, textFileString1);
+    }
+
+    @Test
+    public void testPutToFileWithNewPath() throws IOException {
+        String tempDirAndFileName = System.getProperty("java.io.tmpdir") + "/non/existant/path/Test.txt";
+
+        TextFileUtils.putStringAsTextFile(FILE_CONTENT, tempDirAndFileName);
+
+        final String textFileString0 = TextFileUtils.getTextFileAsString(tempDirAndFileName);
+        assertEquals(FILE_CONTENT, textFileString0);
+
+        final FileInputStream fis = new FileInputStream(tempDirAndFileName);
+        final String textFileString1 = TextFileUtils.getStreamAsString(fis);
+        assertEquals(textFileString0, textFileString1);
 
+        File tempDirAndFile = new File(tempDirAndFileName);
+        tempDirAndFile.delete();
+        tempDirAndFile.getParentFile().delete();
+        tempDirAndFile.getParentFile().getParentFile().delete();
+        tempDirAndFile.getParentFile().getParentFile().getParentFile().delete();
     }
 }