读取HTTP远程文件并将其保存到本地磁盘非常简单:
org.apache.commons.io.FileUtils.copyURLToFile(new URL("http://path/to.file"), new File("localfile.txt"));
但是我想读取一个文件而不必将其保存到磁盘上,只需将其保存在内存中并从那里读取即可。
这可能吗?
答案 0 :(得分:4)
您可以使用java.net.URL#openStream()
InputStream input = new URL("http://pat/to.tile").openStream();
// ...
答案 1 :(得分:2)
final URL url = new URL("http://pat/to.tile");
final String content = IOUtils.toString(url.openStream(), "UTF-8"); // or your preferred encoding
或者,您可以只访问流并按照自己的意愿进行操作。如果您使用String
,则不需要使用apache commons获取InputStreamReader
,但由于您已经在使用,因此没有理由不这样做公地-IO
正如其他人所提到的,如果你只是想在内存中而不将流处理成String,只需要url.openStream()
答案 2 :(得分:0)
您可以这样做:
public static String getContent(String url) throws Exception {
URL website = new URL(url);
URLConnection connection = website.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null)
response.append(inputLine);
in.close();
return response.toString();
}
答案 3 :(得分:0)
如果您乐意介绍第三方库,那么OkHttp就有一个例子可以做到这一点。
OkHttpClient client = new OkHttpClient();
String url = "http://pat/to.tile";
Request request = new Request.Builder()
.url(url)
.build();
Response response = client.newCall(request).execute();
String urlContent = response.body().string();
该库还将解析并提供所有与HTTP协议相关的标题等。