Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取HTML需要很长的编译和安装时间_Java_Android - Fatal编程技术网

Java 获取HTML需要很长的编译和安装时间

Java 获取HTML需要很长的编译和安装时间,java,android,Java,Android,编译代码花费的时间太长(大约5分钟以上,仅适用于此应用程序)。 最后完成时,完整的HTML不会显示在logcat中!只是部分。 你们能指出代码有什么问题吗? 是因为“InputStream”逐字读取(因为HTML非常庞大) 公共类MainActivity扩展了AppCompatActivity{ public class DownloadTask extends AsyncTask<String, Void, String> { @Override protecte

编译代码花费的时间太长(大约5分钟以上,仅适用于此应用程序)。 最后完成时,完整的HTML不会显示在logcat中!只是部分。 你们能指出代码有什么问题吗? 是因为“InputStream”逐字读取(因为HTML非常庞大)

公共类MainActivity扩展了AppCompatActivity{

public class DownloadTask extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... urls) {

        String result = "";
        URL url;
        HttpURLConnection urlConnection = null;

        try {
            url = new URL(urls[0]);
            urlConnection = (HttpURLConnection) url.openConnection();
            InputStream in = urlConnection.getInputStream();
            InputStreamReader reader = new InputStreamReader(in);
            int data = reader.read();

            while (data != -1) {
                char current = (char) data;

                result += current;

                data = reader.read();
            }

            return result;

        } catch (Exception e) {
            e.printStackTrace();

            return "Failed";
        }
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    DownloadTask task = new DownloadTask();
    String result = null;
    try {
        result = task.execute("http://www.amazon.com").get();
    } catch (Exception e) {
        e.printStackTrace();
    }

    Log.i("Result",result);
}
公共类下载任务扩展了异步任务{
@凌驾
受保护的字符串doInBackground(字符串…URL){
字符串结果=”;
网址;
HttpURLConnection-urlConnection=null;
试一试{
url=新url(url[0]);
urlConnection=(HttpURLConnection)url.openConnection();
InputStream in=urlConnection.getInputStream();
InputStreamReader reader=新的InputStreamReader(in);
int data=reader.read();
while(数据!=-1){
当前字符=(字符)数据;
结果+=电流;
data=reader.read();
}
返回结果;
}捕获(例外e){
e、 printStackTrace();
返回“失败”;
}
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadTask任务=新建DownloadTask();
字符串结果=null;
试一试{
结果=任务。执行(“http://www.amazon.com).get();
}捕获(例外e){
e、 printStackTrace();
}
Log.i(“结果”,结果);
}

是的。这样进行的系统调用越多,性能越差。您应该一次读取多个千字节,而不是字符。如果需要一次循环一个,请在以后执行


另外,在字符串上使用StringBuilder!!!!+效率很低。对于创建新字符串对象的每个字符,StringBuilder都会避免这种情况。

谢谢,伙计,我对我的ipstream有疑问。那么如何一次读取多KB?