I am trying to create a FileWriter instance pointing to a folder were everyone has write access:
JavaScript
x
new FileWriter("C:\Tempjava_play\temp")
And I am getting java.io.FileNotFoundException with detail message:
JavaScript
"C:Tempjava_playtemp (Access is denied)"
The folder exists and if I stop in debugger and evaluate expression below it always returns true as it should:
JavaScript
new File("C:\Tempjava_play\temp").canWrite()
I don’t understand what is going on. I am using intelij and I have Windows 7 operating system and I am trying to run this using Java 8.
Thank you in advance.
Advertisement
Answer
You have reported expected behaviour . On Windows any attempt to write to a directory with FileWriter
will fail, giving access denied:
JavaScript
File folder = new File("C:\Tempjava_play\temp");
System.out.println("folder.isDirectory()="+folder.isDirectory()+" folder.canWrite()="+folder.canWrite());
// prints "folder.isDirectory()=true folder.canWrite()=true"
System.out.println("new FileWriter("+folder+")="+new FileWriter(folder));
// reports Exception java.io.FileNotFoundException: C:Tempjava_playtemp (Access is denied)
Changing the path to a file within the folder should work fine as long as the filename provided is writable:
JavaScript
File file = new File(folder, "file"+System.nanoTime()+".xyz");
try(FileWriter fw = new FileWriter(file)) {
// no exception
}