简体   繁体   English

在Android中使用缓冲读取器读取大文件数据

[英]Read large file data using buffered reader in android

hi i want to read large remote file into string using buffered reader.but i got half data of remote file. 嗨,我想使用缓冲的reader.read将大型远程文件读为字符串,但是我得到了远程文件的一半数据。

        BufferedReader reader = new BufferedReader(new InputStreamReader(
                inputstream),8*1024);

        StringBuilder sb = new StringBuilder(999999);
        String line;

        while ((line = reader.readLine()) != null) {
            Log.e("Line is ",line);
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
        Log.e("Content: ", sb.toString());

How to get full data of remote file? 如何获取远程文件的完整数据?

It seems there is nothing wrong with your code but you can try it this way: 您的代码似乎没有错,但是您可以通过以下方式尝试:

private String ReceiveData(InputStream inputstream){

        StringBuilder sb = null;
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader( inputstream),8*1024);
        sb = new StringBuilder();
        String str;
        int numRead = 0;

        try {
            if (bufferedReader!=null) {
                if (bufferedReader.ready()) {

                    try {
                        while ((numRead = bufferedReader.read()) >= 0) {

                            //convert asci to char and then to string
                            str = String.valueOf((char) numRead);

                            if ((str != null)&& (str.toString() != "")) {

                                sb.append(str);
                            }

                            if (!bufferedReader.ready()){
                                //no more characters to read
                                break;
                            }
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    //loop exited, check for null
                    if (sb != null) {
                        return sb.toString();
                    }
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

Hope I helped. 希望我能帮上忙。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM