在android java中从internet获取txt文件的一部分

在android java中从internet获取txt文件的一部分,java,android,html,get,text-files,Java,Android,Html,Get,Text Files,我正在开发一个从固定网页获取信息并将信息转换为图形的应用程序。我试图接收的网页是一个txt文件。问题是txt文件太大了,用java将文件转换成字符串需要一分钟以上的时间。我使用的代码如下所示: HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet("http://winterberg.dnsalias.net:9000/log.txt"); ResponseHandler<String>

我正在开发一个从固定网页获取信息并将信息转换为图形的应用程序。我试图接收的网页是一个txt文件。问题是txt文件太大了,用java将文件转换成字符串需要一分钟以上的时间。我使用的代码如下所示:

HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://winterberg.dnsalias.net:9000/log.txt");
ResponseHandler<String> handler = new BasicResponseHandler();
response = client.execute(httpGet, handler);
HttpClient=newdefaulthttpclient();
HttpGet HttpGet=新的HttpGet(“http://winterberg.dnsalias.net:9000/log.txt");
ResponseHandler=new BasicResponseHandler();
response=client.execute(httpGet,handler);
txt文件表示房屋中的温度历史记录。自2011年8月11日起,每小时自动向文本文件添加一行文本,因此它包含6000多行。但是,只有上个月的信息与申请相关。有没有办法从文件末尾开始读取,直到它读取了一定数量的行

或者有没有其他方法可以加快读取文件的速度


我无法更改文本文件。

您可以完全读取文本文件并保存读取的字节数。因此,在下一次调用中,您可以读取从存储的数字开始的字节范围,并在下载此特定字节后,将其附加到原始文本文件中。您有一个文本文件,它用新行更新

您可以使用以下代码部分来获取字节范围:

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet get = new HttpGet(new URI(...));
get.addHeader("Range", "bytes=" + start + "-");
InputStream in = httpClient.execute(get).getEntity().getContent();
对于追加文件,您可以使用追加模式打开文件,并在其上写入新字节:

FileOutputStream fos = new FileOutputStream("file.txt", true); //true means openning file in append mode

byte[] buffer = new byte[1024];
int nread = -1;
while((nread != in.read(buffer, 0, 1024))
    fos.write(buffer, 0, nread);

in.close();
fos.close();

希望它对您有用:)

最简单的方法是在服务器上使用一个非常简单的脚本来读取文件并打印最后30行

您也可以尝试使用范围HTTP头,但许多服务器没有实现这一点(您已经有了另一个示例的答案)


不过,我认为脚本是一个更好的选择。

在第一次运行时,您应该获得文本文件的所有部分,因此,您应该将start设置为
0
如果您得到了问题答案,您应该接受正确的答案。
sample usage:  
Range: bytes=500-999