r1800 - in trunk/src: main/java/org/nuiton/util test/java/org/nuiton/util
Author: echatellier Date: 2010-03-12 10:39:42 +0100 (Fri, 12 Mar 2010) New Revision: 1800 Log: Fix #379 : NullPointerException in FileUtil.writeString with relative path Modified: trunk/src/main/java/org/nuiton/util/FileUtil.java trunk/src/test/java/org/nuiton/util/FileUtilTest.java Modified: trunk/src/main/java/org/nuiton/util/FileUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/util/FileUtil.java 2010-03-10 18:24:09 UTC (rev 1799) +++ trunk/src/main/java/org/nuiton/util/FileUtil.java 2010-03-12 09:39:42 UTC (rev 1800) @@ -495,8 +495,12 @@ */ static public void writeString(File file, String content) throws IOException { //fixme on doit tester le retour de la méthode, car il se peut que le répertoire - // ne puisse être crée. - file.getParentFile().mkdirs(); + // ne puisse etre cree. + File parentFile = file.getParentFile(); + if (parentFile != null) { + parentFile.mkdirs(); + } + BufferedWriter out = getWriter(file); out.write(content); out.close(); @@ -513,7 +517,11 @@ static public void writeString(File file, String content, String encoding) throws IOException { //fixme on doit tester le retour de la méthode, car il se peut que le répertoire // ne puisse être crée. - file.getParentFile().mkdirs(); + File parentFile = file.getParentFile(); + if (parentFile != null) { + parentFile.mkdirs(); + } + BufferedWriter out = getWriter(file, encoding); out.write(content); out.close(); Modified: trunk/src/test/java/org/nuiton/util/FileUtilTest.java =================================================================== --- trunk/src/test/java/org/nuiton/util/FileUtilTest.java 2010-03-10 18:24:09 UTC (rev 1799) +++ trunk/src/test/java/org/nuiton/util/FileUtilTest.java 2010-03-12 09:39:42 UTC (rev 1800) @@ -59,8 +59,45 @@ result = FileUtil.extension(new File("/tmp/toto.xml"), "t", "."); Assert.assertEquals("o.xml", result); } + + @Test + public void testWriteString() throws IOException { + File testFile = new File(System.getProperty("java.io.tmpdir"), "test.txt"); + testFile.deleteOnExit(); + FileUtil.writeString(testFile, "testWriteString"); + Assert.assertEquals("testWriteString", FileUtil.readAsString(testFile)); + } + + /** + * This test throwed NPE before 1.2.1 with simple file path (current folder). + * + * @throws IOException + */ @Test + public void testWriteStringRelative() throws IOException { + File testFile = new File("test.txt"); + testFile.deleteOnExit(); + FileUtil.writeString(testFile, "testWriteString"); + + Assert.assertEquals("testWriteString", FileUtil.readAsString(testFile)); + } + + /** + * Test testWriteString method with file containing ".." + * + * @throws IOException + */ + @Test + public void testWriteStringRelativeNonCanonical() throws IOException { + File testFile = new File(".." + File.separator + "testdir" + File.separator + "test.txt"); + testFile.deleteOnExit(); + FileUtil.writeString(testFile, "testWriteString"); + + Assert.assertEquals("testWriteString", FileUtil.readAsString(testFile)); + } + + @Test public void testCopyRecursively() throws Exception { File srcDir = FileUtil.createTempDirectory("test-copyRecursively", ""); File destDir1 = FileUtil.createTempDirectory("test-copyRecursively", "");
participants (1)
-
echatellier@users.nuiton.org