我在这里有方法,我在我的方法中传递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
为什么我收到此错误?问题是什么?
答案 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对象