URLConnection类可以获得输出流,所以就想试试向本地文件中写数据,
程序如下:import java.net.*;
import java.io.*;
public class URLConnectionTest
{

public static void main(String args[])
{
try
   {

    URL url=new URL("file:\\E:\\document\\hello.txt");
    URLConnection con=url.openConnection();//返回一个URLConnection对象
    con.setDoOutput(true);

     BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(con.getOutputStream()));
     bw.write("asdfadfadfasdfasdf");
     bw.newLine();
     bw.write("adfasdfasfadfsdf");
     bw.newLine();
     bw.close();
   }
   catch(MalformedURLException e)
   {
       e.printStackTrace();
   }
   catch(IOException e)
   {
       e.printStackTrace();
   }
   

}

}
程序抛出以下异常:
 java.net.UnknownServiceException: protocol doesn't support output
    at java.net.URLConnection.getOutputStream(URLConnection.java:792)
    at URLConnectionTest.main(URLConnectionTest.java:18)个人觉得是此句代码的问题:URL url=new URL("file:\\E:\\document\\hello.txt");
请高手予以解答,如何通过URL、URLConnection进行文件的写操作??
谢谢了 

解决方案 »

  1.   


    long begintime = System.currentTimeMillis();
              
               URL url = new URL("http://www.yhfund.com.cn");
               HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();
               urlcon.connect();         //获取连接
               InputStream is = urlcon.getInputStream();
               BufferedReader buffer = new BufferedReader(new InputStreamReader(is));
               StringBuffer bs = new StringBuffer();
               String l = null;
               while((l=buffer.readLine())!=null){
                   bs.append(l).append("/n");
               }
               System.out.println(bs.toString());
              
               //System.out.println(" content-encode:"+urlcon.getContentEncoding());
               //System.out.println(" content-length:"+urlcon.getContentLength());
               //System.out.println(" content-type:"+urlcon.getContentType());
               //System.out.println(" date:"+urlcon.getDate());
                    
               System.out.println("总共执行时间为:"+(System.currentTimeMillis()-begintime)+"毫秒");
            }catch(IOException e){
               System.out.println(e);
           }
        }
    }// 现在通过输出流对象构建对象输出流对象,以实现输出可序列化的对象。 
    ObjectOutputStream objOutputStrm = new ObjectOutputStream(outStrm); // 向对象输出流写出数据,这些数据将存到内存缓冲区中 
    objOutputStrm.writeObject(new String("我是测试数据")); // 刷新对象输出流,将任何字节都写入潜在的流中(些处为ObjectOutputStream) 
    objOutputStm.flush(); // 关闭流对象。此时,不能再向对象输出流写入任何数据,先前写入的数据存在于内存缓冲区中, 
    // 在调用下边的getInputStream()函数时才把准备好的http请求正式发送到服务器 
    objOutputStm.close(); // 调用HttpURLConnection连接对象的getInputStream()函数, 
    // 将内存缓冲区中封装好的完整的HTTP请求电文发送到服务端。 
    InputStream inStrm = httpConn.getInputStream(); // <===注意,实际发送请求的代码段就在这里 // 上边的httpConn.getInputStream()方法已调用,本次HTTP请求已结束,下边向对象输出流的输出已无意义, 
    // 既使对象输出流没有调用close()方法,下边的操作也不会向对象输出流写入任何数据. 
    // 因此,要重新发送数据时需要重新创建连接、重新设参数、重新创建流对象、重新写数据、 
    // 重新发送数据(至于是否不用重新这些操作需要再研究) 
    objOutputStm.writeObject(new String("")); 
    httpConn.getInputStream(); 
      

  2.   

    URL url=new URL("file:\\E:\\document\\hello.txt");url是: file:\\ 不支持getOutputStream 
            http:\\ 才可以
      

  3.   

    用文件的URL写没试过。不过看出错信息,难道用文
    件URL不支持写吗?
      

  4.   


    对于file协议,确实不支持获取 OutputStream,只支持获取 InputStream。建议用:
    new FileWriter(url.getPath());
      

  5.   

    Java現存的在這方面的安全模型實現可能在某種方式上依賴於FileURLConnection的只讀特性