我们可以用java将Url路径和文件名传递给FileOutputStream吗
先生,我是java新手,我想在URL路径上写一个文件有没有可能在URL路径上写一个文件给我一些提示我们可以用java将Url路径和文件名传递给FileOutputStream吗,java,Java,先生,我是java新手,我想在URL路径上写一个文件有没有可能在URL路径上写一个文件给我一些提示 File file = new File(url.getPath()); FileOutputStream fileOutputStream = new FileOutputStream(file); 这实际上适用于简单的情况,例如文件:/path/to/abc(由于缺少//,实际上是一个格式错误的文件URL)或file:///path/to/abc(正确的文件URL语法)。但是,当路径包含UR
File file = new File(url.getPath());
FileOutputStream fileOutputStream = new FileOutputStream(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 和设置/
。就RFC而言,这个URL是不正确的,但事实是java.net.URL很高兴地接受了它,所以您经常会看到这样的情况。我相信很多人都做过新的URL(“文件:/”+fileName)代码>-这些是创建此URL的代码
因此,我目前的版本是将两者结合起来:
File file;
try {
file = new File(url.toURI());
} catch(URISyntaxException e) {
file = new File(url.getPath());
}
FileOutputStream fileOutputStream = new FileOutputStream(file);
是的,这应该是可能的-您可以使用构造函数newfileoutputstream(新文件(newuri())
。阅读有关java.net.URI类的更多信息。否您不能将URL路径和文件名作为参数传递给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和文件名传递给FileOutPutStream,您实际上想要实现什么吗?参考一些好的java文件处理教程,但它缺乏相关信息。您希望使用什么协议来传输数据?FileOutputStream无法工作,您必须使用一种使用特定协议(HTTP PUT、FTP等)的方式。您是指“文件”的文件名吗?