The documentation for File.isFile [1] reads: "Tests whether the file denoted by this abstract pathname is a normal file."
/dev/null is not a normal file. It is a special file used to write bytes without error. So use of this file would be under special circumstances and is not something expected for the common use case of FileUtils. Note that you can write to this file using the latest master version of IO (2.12.0-SNAPSHOT) since this works (and prints false): @Test void testDevNull() throws IOException { File f = new File("/dev/null"); System.out.println(f.isFile()); FileUtils.write(f, "hello", StandardCharsets.UTF_8); } So this is not the source of error in your test. You mention the error is raised in the method FileUtils.requireFile. This is a private method that is used in the following public methods: checksum(File, Checksum) contentEquals(File, File) contentEqualsIgnoreEOL(File, File, String) copyFile(File, File, CopOption...) moveFile(File, File, CopOption...) openOutputStream(File, boolean) So perhaps you are using one of these methods (or one that calls them) in your tests. You should be able to view the stacktrace and see the origin of the error. If your test is using /dev/null as a sink for data that you do not care about then in this case you can create a temp file in your test and use that as your destination. Then delete your temp file at the end of the test. This will at least ensure that all bytes are consumed by the destination file, even if you do not wish to validate that in your test. If you have code that wishes to output to a file or optionally ignore output then you can use one of the objects that acts like /dev/null, e.g. NullAppendable, NullOutputStream, NullPrintStream or NullWriter. Regards, Alex [1] https://docs.oracle.com/javase/8/docs/api/java/io/File.html#isFile-- On Mon, 17 Oct 2022 at 10:45, ABHISHEK DAS GUPTA <15ucs...@lnmiit.ac.in> wrote: > > Hello, > We are currently addressing commons io CVE where we need to upgrade it > from 2.4 to 2.11.0 . After the upgrade, one of our UTs is failing with > "Parameter 'file' is not a file: /dev/null" . Within the codeflow of the > test there is a call to FileUtils.write( File("/dev/null"), char sequence) > and the code fails here after this method call. We digged inside the > internal of this method and analyzed the difference b/w 2.4 and 2.11.0. > There is a difference b/w the flow and we traced it back to the following > commit. > <https://github.com/apache/commons-io/commit/0cee29aa4c1818963ed1a55058219282e89d7488?diff=split> > There > is a check > <https://github.com/apache/commons-io/blob/7264b2607235065aef98f12ee0e3c0d3586b9b49/src/main/java/org/apache/commons/io/FileUtils.java#L2809> > to see whether /dev/null is a file or not. This returns false. > Please let us know how to proceed to fix this issue and if you can provide > a reason also why this is failing? > > Best > Abhishek --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org