使用java Streams读取服务器上的文本文件的最新版本(不是缓存版本)

时间:2015-06-30 00:32:56

标签: java

我有一个文本文件的网址,我想阅读它:

URL url = new URL("example.com/textfile.txt");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
String inpuline = null;
while ((inpuline = in.readLine()) != null) {
    System.out.println(inpuline);
}
in.close();

问题是当我更改textfile.txt的内容时,我的程序在下次运行时没有意识到更改。

1 个答案:

答案 0 :(得分:1)

更改txt文件后,应验证服务器是否已实现更改并返回文件的最新版本。要验证这一点,请使用浏览器。如果您没有获得文件的最新版本,则服务器出现问题。如果您需要按Ctrl+F5,则表示可能是某些代理或您的浏览器兑现了旧文件。

毕竟尝试以下变通办法可能会有所帮助:

try {
   URL url = new URL("example.com/textfile.txt");
   Scanner s = new Scanner(url.openStream());
   // read from your scanner
}
catch(IOException ex) {
   ex.printStackTrace(); // for now, simply output it.
}

如果再次获得文件的缓存版本,请尝试使用HttpURLConnection下载文件并将其写入临时文件。然后从该临时文件中读取,然后删除该临时文件。也许下载文件可以强制服务器获取该文件的最新版本。要避免文件的缓存版本,请尝试以下方法:

// Create a URLConnection object
URLConnection connection = myURL.openConnection();

// Disable caching
connection.setUseCaches(false);

祝你好运。