Sir我是java的新手我想在URL路径上写一个文件是否有任何可能的方法在URL路径上写一个文件给我一些提示
答案 0 :(得分:1)
否则您无法将URL路径和FileName作为参数传递给FileOutputStream。
但是,您可以使用以下代码从指定的URL读取文件:
try{
URL url = new URL("http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html");
String path = "D://StackOverflow/";
InputStream ins = url.openStream();
OutputStream ous = new FileOutputStream(path);
final byte[] b = new byte[2048];
int length;
while ((length = ins.read(b)) != -1) {
ous.write(b, 0, length);
}
ins.close();
ous.close();
} catch(Exception e){
e.printStackTrace();
}
您能否通过将URL和fileName传递给FileOutPutStream来解释您实际想要实现的目标?
答案 1 :(得分:0)
File file = new File(url.getPath());
FileOutputStream fileOutputStream = new FileOutputStream(file);
这实际上适用于简单的情况,例如file:/path/to/abc
(实际上是错误的文件URL,因为它缺少//)或file:///path/to/abc
(正确的文件URL语法)。但是,这不能当路径包含不安全的URL字符时工作,例如file:///c:/Documents%20and%20Settings/...
,因为"%20"
以文件名结尾,这是错误的。
我们被告知在JDK1.5中添加了java.net.URI来替换损坏的URL类,那么我们为什么不尝试呢?
File file = new File(url.toURI());
FileOutputStream fileOutputStream = new FileOutputStream(file);
这很好地将%20转换为空格(以及所有其他转义字符。)问题解决了吗?不。 URI非常严苛,无法处理file:///c:/Documents and Settings/
之类的网址。就RFC而言,这个URL被破坏了,但实际情况是java.net.URL很乐意接受它,所以你经常会看到这个。我相信很多人已经完成new URL("file://"+fileName);
- 这些是创建此网址的代码。
所以我目前的版本是两者结合:
File file;
try {
file = new File(url.toURI());
} catch(URISyntaxException e) {
file = new File(url.getPath());
}
FileOutputStream fileOutputStream = new FileOutputStream(file);
答案 2 :(得分:0)
是的,应该可以 - 你可以使用构造函数new FileOutputStream(new File(new URI()))
。阅读有关java.net.URI类的更多信息。