你好我是java和编程的新手,所以请原谅我,如果我错了一些容易的东西。我的目标是导入文本文件,扫描每一行,测试行(如果是URL),然后将其打印到输出文件。所以程序正在测试每个URL,如果URL有效(工作),我将在新的输出文件中打印该行。
我的问题是测试网址部分。它读取该行以便打印URL,但它会多次打印任何建议?有没有办法让它打印一次?我想我明白它会多次打印,因为它会逐行读取HTML代码。
try
{
// Test URL Connection
URL url = new URL("http://www." + line);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
wr = new OutputStreamWriter(conn.getOutputStream());
wr.flush();
// Get the response
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while((lines = rd.readLine()) != null)
{
System.out.println(line);
}
}
catch(Exception e)
{
System.out.println(e.toString());
}
答案 0 :(得分:0)
您的代码正在读取名为“lines”的变量行,但您正在打印行变量。行变量是您用来创建URL的行:
URL url = new URL("http://www."+line);
如果您只想打印出网址,那么您可能需要考虑将网址构建为这样的字符串:
String targetUrl = String.format("http://www.%s", domainName);
System.out.println(targetUrl);
然后创建URL对象。
URL url = new URL(targetUrl);
如果您尝试打印从目标网址检索的内容,请更改代码以打印出“行”:
System.out.println(lines);
使用更多描述性变量名称会更好。例如,不使用“line”构造URL,而是使用类似“domainName”的变量名称。然后,当您一次读取一行时,可以使用变量名称“line”。
// Assuming that domainName is set before the try block
try
{
// Test URL Connection
URL url = new URL("http://www."+domainName);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.flush();
String line = null;
// Get the response
rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
while ((line = rd.readLine()) != null)
{
System.out.println(line);
}
}
catch (Exception e)
{
System.out.println(e.toString());
}