java - How to read a file created at runtime? -


using java 8.

basically, in unit test (junit) have code:

callsomecode(); asserttrue(new file(this.getclass().getresource("/img/dest/someimage.gif").getfile()).exists()); 

in callsomecode(), have this:

inputstream = bodypart.getinputstream(); file f = new file("src/test/resources/img/dest/" + bodypart.getfilename()); //filename being someimage.gif fileoutputstream fos = new fileoutputstream(f); byte[] buf = new byte[40096]; int bytesread; while ((bytesread = is.read(buf)) != -1)    fos.write(buf, 0, bytesread); fos.close();  

the first time test runs, this.getclass().getresource("/img/dest/someimage.gif")returns null although file created.

the second time (when file created during first test run overwritten), non-null , test passes.

how make work first time?
should configure special setup in intellij automatically refresh folder file created?

note have basic maven structure:

--src ----test ------resources    

as comment nakano531 points out - problem not file system, classpath. you're trying read file using classloader invoking getclass().getresource(...) methods rather reading file using classes access file system directly.

for example, if had written test this:

callsomecode(); file file = new file("src/test/resources/img/dest/someimage.gif"); asserttrue(file.exists()); 

you wouldn't have had issue you're having now.

your other option implement solution link nakano531 provided: https://stackoverflow.com/a/1011126/1587791


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -