`

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

 
阅读更多
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();
                }
分享到:
评论

相关推荐

    java读取raw格式的图片并显示

    在本场景中,我们将探讨如何使用Java Swing技术读取RAW格式的图片文件并将其显示在用户界面上。 首先,理解RAW文件的基本概念是至关重要的。RAW文件包含了相机传感器捕获的原始光数据,这些数据未经色彩校正、白...

    Android Studio文本文件内容读取例子(不用sd卡)

    - 对于大文件,可以考虑使用`InputStream`的`read(byte[])`方法分块读取,减少内存占用。 9. **异步读取**: - 为了防止阻塞主线程,可以在后台线程(如AsyncTask或Thread)中执行文件读取操作,然后更新UI。 ...

    Android手机读取大文本文件源码

    对于大文件,推荐在后台线程(如AsyncTask或IntentService)中执行读取操作,以免阻塞UI线程。这可以通过`AsyncTask`实现,将读取过程放在`doInBackground`方法中,然后在`onPostExecute`方法中更新UI。 5. 分块...

    Android读取文本文件的demo

    这个"Android读取文本文件的demo"就是一个很好的学习示例,它演示了如何从res/raw目录下读取txt文件并将其内容显示在屏幕上。下面我们将详细探讨这个过程以及涉及的关键知识点。 首先,Android中的资源管理非常重要...

    文件读写(SD卡文件,及资源文件)

    例如,它可能有一个功能是将`res/raw`目录下的文本文件读取出来,然后写入到SD卡上的某个位置。 5. **最佳实践** - **使用Buffered流**:缓冲流能提高读写效率,减少磁盘I/O操作次数。 - **异常处理**:文件操作...

    Android文件读取.rar

    - 对于大文件或性能敏感的操作,推荐使用异步处理,比如`AsyncTask`或`ExecutorService`,以避免阻塞主线程。 总之,Android Studio为开发者提供了便利的环境来处理文件读取操作。无论是应用内部的文件,还是外部...

    raw-posix.rar_RAW_posix

    1. **块设备模拟**:RAW Posix驱动程序将RAW文件视为一个块设备,使得操作系统可以像对待物理硬盘一样对它进行读写操作。它创建了一个逻辑设备节点,通过特定的设备文件路径访问。 2. **I/O操作**:驱动程序实现了...

    pcm_play.rar_RAW PCM AUDIO FILE_pcm_pcm 文件 播放_play_音频

    1. **打开文件**:使用文件I/O函数打开RAW PCM文件,读取文件内容。 2. **解析文件头**:由于RAW PCM文件没有标准的文件头,需要知道或从其他来源获取采样率、位深度、声道数等信息。 3. **分配内存**:根据文件的位...

    alsa_record_devide_in_4_raw_record_RAW_xmos_alsa_alsarecord_

    同时,考虑到实时性和性能,可能需要优化读写操作,例如使用异步I/O或多线程处理。 总之,通过理解和应用ALSA库,我们可以构建一个高效且灵活的录音程序,满足特定需求,例如本例中的多声道RAW文件记录。这不仅加深...

    AI人工智能资料 机器学习和深度学习知识 day05-Tensorflow IO操作-队列和线程、文件读取、图片处理 共40页.pptx

    3. 解码文件内容,如使用`decode_csv`或`decode_raw`将数据转换为模型所需的张量格式。 在实际应用中,Tensorflow的IO操作常与数据预处理结合,例如对图片数据进行缩放、归一化等操作,以便于模型训练。通过合理...

    zip、rar格式文件解压

    本篇文章将详细介绍如何在Java环境下,特别是Android平台上,进行zip和rar文件的解压操作。 首先,我们来看zip文件。Zip是一种流行的文件格式,用于将多个文件和目录打包成一个单一的可执行文件。在Android中,我们...

    serio_raw.rar_interface

    标题“serio_raw.rar_interface”涉及的是Linux操作系统中与用户空间交互的串行接口,具体是serio_raw子系统的文件操作。serio_raw是Linux内核中的一个组件,用于处理低级串行输入/输出(Serial Input/Output,简称...

    Android编程实现读取工程中的txt文件功能

    本文将详细介绍如何在Android应用中实现这个功能,主要分为两个部分:从res/raw文件夹中读取txt文件以及从assets文件夹中读取txt文件。 1. 从res/raw文件夹读取txt文件 res/raw文件夹是Android工程中用来存放原始...

    android动态加载jar文件中的图片

    一旦获取到`InputStream`,我们可以使用`ZipInputStream`来遍历jar文件的内容。对于每个条目,检查其是否为图片文件(如`.jpg`, `.png`等)。如果是,我们可以使用`BufferedImage`(需要额外引入图像处理库,如...

    java、Android实现Excel表的解析读取操作

    - 性能优化:对于大数据量的Excel文件,可能需要考虑分批读取或异步处理,避免阻塞UI线程。 通过以上方法,你可以在Java和Android环境中有效地解析和读取Excel文件,满足数据处理的需求。无论是简单的数据展示还是...

    用原始套接字结合fstream的vc文件传输程序

    在本文中,我们将深入探讨如何使用原始套接字(Raw Sockets)结合C++标准库中的fstream类在Visual C++(VC)环境下实现一个简单的文件传输程序。这个程序包括两个关键部分:服务器端和客户端,它们共同实现了文件的...

    asm理论知识

    - **内容**:1号文件包含了所有文件的磁盘占用信息,包括元文件和其他数据库文件。 - **位置**:1号文件位于0号磁盘的2号AU中,这一位置是固定的。 - **结构特点**:1号文件至少占用2个AU,原因是每个AU(Allocation...

    Android Txt文本阅读器源码

    对于大文件,一次性加载所有内容可能导致内存问题。因此,源码可能采用了分块加载或者懒加载策略,只在需要时加载部分文本。 10. **测试**: 良好的源码应包含测试用例,确保不同场景下的功能正常,例如不同大小...

    SD卡读写可用程序

    在智能车应用中,SD卡读写程序是一个关键组件,特别是在需要实时记录摄像头图像的情况下。本文将详细探讨如何实现S128芯片对SD卡的读写操作,并介绍相关技术要点。 首先,我们要理解S128芯片。S128通常是一款微控制...

    CSOCKET同步异步通讯与多线程总结[定义].pdf

    本文将深入探讨C#环境下Socket同步与异步通信的基本概念、核心原理以及如何在多线程环境下高效运用这些技术。 #### 二、Socket简介 **Socket**是一种用于网络通信的应用程序编程接口(API),它允许两个或多个应用...

Global site tag (gtag.js) - Google Analytics