为什么我在点击URL获取内容时会收到FileNotFoundException?

时间:2014-02-05 07:45:40

标签: java exception

我在这里有方法,我在我的方法中传递URL,用户名和密码。

这是我的方法:

private void fetchURL (String urlString,String user,String pass) {  

try {
    URL url;
    URLConnection urlConn;
    DataOutputStream printout;
    DataInputStream input;

    Properties sysProperties = System.getProperties();

    sysProperties.put("proxyHost", "proxy.cyberway.com.sg");
    sysProperties.put("proxyPort", "8080");
    sysProperties.put("proxySet", "true");
    url = new URL (urlString);
    urlConn = url.openConnection();
    urlConn.setDoInput (true);

    urlConn.setDoOutput (true);

    urlConn.setUseCaches (false);

    urlConn.setRequestProperty ("Content-Type", "application/x-www-form-urlencoded");

    printout = new DataOutputStream (urlConn.getOutputStream ());

    String content = "USERNAME=" + URLEncoder.encode (user) + "&PASSWORD=" + URLEncoder.encode (pass);

    printout.writeBytes (content);
    printout.flush ();
    printout.close ();

    input = new DataInputStream (urlConn.getInputStream ());
    FileOutputStream fos=new FileOutputStream("D://outcome.txt");
    String str;
while (null != ((str = input.readLine())))
{

    if (str.length() >0)
    {
        fos.write(str.getBytes());
        fos.write(new String("\n").getBytes());
    }
}
    input.close ();
}
    catch(MalformedURLException mue){ System.out.println (mue);}
    catch(IOException ioe){ System.out.println (ioe);}
}

我得到的是这个异常:java.io.FileNotFoundException:URL / Address

为什么我收到此错误?问题是什么?

2 个答案:

答案 0 :(得分:0)

它是D:\\或D:/

不是D://因为://是用于http://或file://

等协议的序列

答案 1 :(得分:0)

将FileOutputStream中的java File类用作

File file = new File("D:\\outcome.txt");
if (!file.isExists) {
  file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(file);
String str;
while (null != ((str = input.readLine()))) {

    if (str.length() > 0) {
       fos.write(str.getBytes());
       fos.write(new String("\n").getBytes());
    }
}

javadoc表示,如果文件不存在且文件流无法创建新文件,FileOutputStream将抛出FileNotFoundException。

因此,更好的方法是在FileOutputStream中使用File对象