android - 写入和读取 ArrayList<File> 到 android 缓存内存

标签 android file caching arraylist android-file

我有一个 apk 文件数组,我需要做的是将 ArrayList 的 apk 文件写入缓存存储,然后将其作为同一个 ArrayList 再次读回。我知道如何插入单个文件并从缓存中再次检索回来。但是,尽管 ArrayList 对象令人担忧,但我完全坚持解决方案和方法论。请帮我。我正在使用以下代码读取和写入高速缓存。对我的代码进行任何修改或细微更改都会对我更有帮助。提前致谢

读写单个文件的实际代码

//Write to cache dir

FileWriter writer = null;
try {
    writer = new FileWriter(tmpFile);
    writer.write(text.toString());
    writer.close();

    // path to file
    // tmpFile.getPath() 

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

//Read to cache directory
String TMP_FILE_NAME = "base.apk";
File tmpFile;

File cacheDir = getBaseContext().getCacheDir();
tmpFile = new File(cacheDir.getPath() + "/" + TMP_FILE_NAME) ;

String line="";
StringBuilder text = new StringBuilder();

try {
    FileReader fReader = new FileReader(tmpFile);
    BufferedReader bReader = new BufferedReader(fReader);

    while( (line=bReader.readLine()) != null  ){
        text.append(line+"\n");
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
}catch(IOException e){
    e.printStackTrace();
}

根据我的插入要求修改代码 ArrayList<File>

String tempFile = null;
public void writeFile(ArrayList<File> files(){

 for(File file: files) {
            FileWriter writer = null;
            try {
                writer = new FileWriter(file);
                tempFile = file.getName().toString();
                writer.write(file.getName().toString());
                writer.close();

                // path to file
                // tmpFile.getPath()

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

        }
}

这是我完全坚持阅读为 ArrayList 的地方

我试过的是

String line="";
        StringBuilder text = new StringBuilder();

        try {
            FileReader fReader = new FileReader(tempFile);
            BufferedReader bReader = new BufferedReader(fReader);

            while( (line=bReader.readLine()) != null  ){
                text.append(line+"\n");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }catch(IOException e){
            e.printStackTrace();
        }

最佳答案

经过长时间的努力,我从 blog 找到了自己的问题答案.

写一个 ArrayList<File> :

public static void createCachedFile (Context context, String key, ArrayList<File> fileName) throws IOException {

        String tempFile = null;
        for (File file : fileName) {
            FileOutputStream fos = context.openFileOutput (key, Context.MODE_PRIVATE);
            ObjectOutputStream oos = new ObjectOutputStream (fos);
            oos.writeObject (fileName);
            oos.close ();
            fos.close ();

        }
    }

阅读 ArrayList<File>

public static Object readCachedFile (Context context, String key) throws IOException, ClassNotFoundException {
        FileInputStream fis = context.openFileInput (key);
        ObjectInputStream ois = new ObjectInputStream (fis);
        Object object = ois.readObject ();
        return object;
    }

我的 Activity 中的最终代码

 createCachedFile (MainActivity.this,"apk",adapter.getAppList ());

 ArrayList<File> apkCacheList = (ArrayList<File>)readCachedFile  (MainActivity.this, "apk");

关于android - 写入和读取 ArrayList<File> 到 android 缓存内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30541736/

相关文章:

python - 如何在读取文件时跳行(原为 :How to index through a file? )

java - 是否可以仅通过在java客户端中提供缓存配置来启动ignite缓存?

android - Android Studio 的 VSCode 键盘快捷键

android - 无法解析 Lcom/work light/android gap/WLDroid Gap 的父类(super class)

Java 文本文件 I/O 位置

java - java.net.URL 的本地文件协议(protocol)

php - 我如何将 json 从 php 传递到 js 并对其进行操作?

javascript - 通过服务器端条件加载 javascript 或 CSS 有缺点吗?

android - 无法在 Kotlin 中使用 Moshi 解析 Map<String, Double> - 意外的原始 double

android - Dagger 2 - 了解进行字段和方法注入(inject)的不同方式