我正在尝试从互联网上下载XML文件,然后将此文件放在目录中(C:/ Nationstates)。
File theDir = new File("/NationStates");
if (!theDir.exists()) {
System.out.println("creating directory: /NationStates" );
boolean result = false;
try{
theDir.mkdir();
result = true;
} catch(SecurityException se){
System.out.println("Dir exists");
}
}
new PrintWriter("/NationStates/NS.xml");
URL website = new URL("https://www.nationstates.net/cgi-bin/api.cgi?nation=ageena");
ReadableByteChannel rbc = Channels.newChannel(website.openStream());
FileOutputStream fos = new FileOutputStream("/NS.xml");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
fos.close();
我可以创建目录,并创建文件(NS.XML)但是当我尝试写入文件时,我收到以下错误:
Exception in thread "main" java.io.FileNotFoundException: \NS.xml (Access is denied)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at XML.main(XML.java:31)
它表示拒绝访问,但我刚刚在同一位置创建了该目录中的目录和文件。
任何想法如何解决这个问题?
答案 0 :(得分:5)
您创建一个目录:
File theDir = new File("/NationStates");
...
theDir.mkdir();
但是你不要写这个目录中的文件:
FileOutputStream fos = new FileOutputStream("/NS.xml");
此外,mkdir()并不一定要创建目录。如果失败,则返回false。但是你没有检查返回的值。
答案 1 :(得分:1)
替换:
FileOutputStream fos = new FileOutputStream("/NS.xml");
通过
FileOutputStream fos = new FileOutputStream("/NationStates/NS.xml");