我想做的是获取此网址的内容:
并将其复制到一个文件中,以便我可以解析它并使用这些元素。
这是我到目前为止所做的:
package test;
import java.io.*;
import java.net.*;
import org.apache.commons.io.FileUtils;
public class JavaGetUrl {
@SuppressWarnings("deprecation")
public static void main(String[] args) throws FileNotFoundException {
URL u;
InputStream is = null;
DataInputStream dis;
String s = null;
try {
u = new URL(
"https://www.aviationweather.gov/adds/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&stationString=CYQB&hoursBeforeNow=2");
is = u.openStream(); // throws an IOException
dis = new DataInputStream(new BufferedInputStream(is));
while ((s = dis.readLine()) != null) {
System.out.println(s);
FileUtils.writeStringToFile(new File("input.txt"), s);
}
} catch (MalformedURLException mue) {
System.out.println("Ouch - a MalformedURLException happened.");
mue.printStackTrace();
System.exit(1);
} catch (IOException ioe) {
System.out.println("Oops- an IOException happened.");
ioe.printStackTrace();
System.exit(1);
} finally {
try {
is.close();
} catch (IOException ioe) {
}
}
}
}
问题是s的内容没有出现在input.txt。
中如果我用任何其他字符串替换s,它的工作原理。所以我猜这是s的数据有问题。是因为它是xml吗?
谢谢大家的帮助。
答案 0 :(得分:3)
该文件可能已被覆盖。
您应该使用“append”mode来获取附加数据的文件(来自readLine)。
public static void writeStringToFile(File file,
String data,
boolean append)
答案 1 :(得分:0)
因为您已经在使用apaches commons-io,所以您也可以使用
FileUtils.copyURLToFile(URL, File)