首页 > 其他分享 >异步读取raw文件下大文件的内容

异步读取raw文件下大文件的内容

时间:2023-04-06 21:38:26浏览次数:47  
标签:文件 context 下大 String raw result str line 读取


AsyncTask,异步处理,主要用于将比较耗时的操作从主线程(UI线程)中分离出来处理,提高运行速度(流畅度)。本来是要学习AsyncTask的,当看到耗时操作时就考虑到了读取大文件操作,然后自己试着读取raw文件夹下面的文件。
有两种方式读取,一种是按行读取,一种是按大小读取;
主要代码如下:
一:按行读取
关键代码:

class FileReadTask extends AsyncTask<String, String, String> {
                String line_str;
                String result;
                Context context;

                FileReadTask(Context context) {
                        this.context = context;
                }
                int i = 0;
                @Override
                protected String doInBackground(String... params) {
                        BufferedReader reader = new BufferedReader(new InputStreamReader(
                                        context.getResources().openRawResource(R.raw.test2)));
                        try {
                                while ((line_str = reader.readLine()) != null
                                                && !(line_str = reader.readLine()).equals("")) {
                                        result += line_str;
                                        System.out.println("line_str:"+line_str);
                                        publishProgress(line_str);
                                }
                                System.out.println("result:"+result);
                        } catch (IOException e) {
                                e.printStackTrace();
                        }
                        return line_str;
                }

                @Override
                protected void onPostExecute(String result) {
                        super.onPostExecute(result);

                }

                @Override
                protected void onPreExecute() {
                        super.onPreExecute();

                }

                @Override
                protected void onProgressUpdate(String... values) {
                        super.onProgressUpdate(values[0]);
                        System.out.println("values:" + values[0]);
                        array.add(values[0]);
                        adapter.notifyDataSetChanged();
                }

        }




二:按大小读取


关键代码:


InputStream input = context.getResources().openRawResource(R.raw.test2);
                String result = null;
                int i;
                byte[] by = new byte[128];//每次读取大小
                try {
                        while((i = input.read(by))>0){
                                byte[] bys = new byte[i];
                                input.read(bys,0,i);
                                String s = new String(bys);
                                result +=s;
                                System.out.println(s);
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }

标签:文件,context,下大,String,raw,result,str,line,读取
From: https://blog.51cto.com/u_5454003/6174159

相关文章

  • Android中asset文件夹和raw文件夹区别
    res/raw和assets的相同点:1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。res/raw和assets的不同点:1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java......
  • 四个方向上的SlidingDrawer
    http://blog.sephiroth.it/2011/03/29/widget-slidingdrawer-top-to-bottom//**Copyright(C)2008TheAndroidOpenSourceProject**LicensedundertheApacheLicense,Version2.0(the"License");*youmaynotusethisfileexceptincomplia......
  • WinDbg调试Dump转储文件及程序崩溃时自动创建转储文件的方式
    通过WinDbg分析转储文件在调试过程中回遇到一些很奇怪的问题,编译器调试无法正常定位问题,所以需要WinDbg,这篇博客是对照多篇文档的简易的入门整理一、必备知识1.1、下载WinDbg微软文档下载Windows调试工具-WinDbg-Windowsdrivers|MicrosoftLearnWinDbgPreview是......
  • 报错:‘VUE-CLI-SERVICE‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    启动前端的项目,命输入npmrundev时,报错:'vue-cli-service'不是内部或外部命令,也不是可运行的程序或批处理文件。如图:1、管理员身份打开 2.输入set-ExecutionPolicyRemoteSigned 3、选择A4、Pycharm-Terminal执行命令:npminstall需要安装一会儿,稍安勿躁,安装完成......
  • Spartacus 项目中的 facade 和 core 文件夹
    Spartacus是SAPCommerceCloud的storefront框架,feature-libs文件夹下的facade文件夹和core文件夹是Spartacus中用于实现特定功能的库文件夹。它们各自的作用如下:facade文件夹:存放与storefront框架中的各种功能和业务逻辑相关的代码。这些代码通过facade模式......
  • Springboot+HTML5+Layui2.7.6上传文件【请求上传接口出现异常】
    1.最近两天在springboot+html5项目中发现在用layui框架时报请求上传接口出现异常这个错误。2.将代码全部整理了一遍,发现前端后台都没错!!!但是还是【请求上传接口出现异常】,于是跑去翻看layui官网。 3.最终最终将错误锁定到了返回的JSON字符串中,我是返回的String,所以一直都会......
  • 管理WEB服务器文件的WebDAV协议&HTTP大跃进--QUIC与HTTP30&WEB安全攻击概述
    管理WEB服务器文件的WebDAV协议WebADV协议    WEBDAV追加方法  WeDAV请求示例  HTTP大跃进--QUIC与HTTP30 QUIC&HTTP3.0   HTTP2.0的问题队头阻塞建立连接的握手延迟大QUIC的特性0RTT   没有队头阻塞的多路复用 ......
  • FolderBrowserDialog类实现选择打开文件
    privatevoidbutton1_Click(objectsender,EventArgse){FolderBrowserDialogdilog=newFolderBrowserDialog();dilog.Description="请选择文件夹";if(dilog.ShowDialog()==DialogResult.OK||dilog.ShowDialo......
  • c# 获取当前文件路径
    Winform获取应用程序的当前路径的方法集合,具体如下://获取当前进程的完整路径,包含文件名(进程名)。stringstr=this.GetType().Assembly.Location;result:X:\xxx\xxx\xxx.exe(.exe文件所在的目录+.exe文件名)//获取新的Process组件并将其与当前活动的进程关联的主......
  • c#.net怎么实现web端上传超大文件
    ​ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。ASP.NET页面设计:TextBox和Button按钮。​编辑TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button实......