我们可以用java将Url路径和文件名传递给FileOutputStream吗

我们可以用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

先生,我是java新手,我想在URL路径上写一个文件有没有可能在URL路径上写一个文件给我一些提示

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等)的方式。您是指“文件”的文件名吗?