Android:复制Assets下所有的文件(遍历每一个文件夹),并存入sdcard里面

这篇博客详细介绍了如何在Android应用中遍历Assets文件夹,并将所有文件复制到SDCard。对于需要在设备外部存储中使用内部资源的开发者来说,这是一个关键的操作步骤。
摘要由CSDN通过智能技术生成
private void CopyAssets(String assetDir, String dir) {
        String[] files;
        try {
            // 获得Assets一共有几多文件
            files = this.getResources().getAssets().list(assetDir);
        } catch (IOException e1) {
            return;
        }
        File mWorkingPath = new File(dir);
        // 如果文件路径不存在
        if (!mWorkingPath.exists()) {
            // 创建文件夹
            if (!mWorkingPath.mkdirs()) {
                // 文件夹创建不成功时调用
            }
        }

        for (int i = 0; i < files.length; i++) {
            try {
                // 获得每个文件的名字
                String fileName = files[i];
                // 根据路径判断是文件夹还是文件
                if (!fileName.contains(".")) {
                    if (0 == assetDir.length()) {
                        CopyAssets(fileName, dir + fileName + "/");
                    } else {
                        CopyAssets(assetDir + "/" 
下面是一个简单的示例代码,它将从assets文件夹复制一个名为"example_file.txt"的文件到应用程序的内部存储中: ```java private void copyFileFromAssets(String fileName) { AssetManager assetManager = getAssets(); InputStream in = null; OutputStream out = null; try { in = assetManager.open(fileName); File outFile = new File(getFilesDir(), fileName); out = new FileOutputStream(outFile); copyFile(in, out); Log.d(TAG, "File copied successfully!"); } catch (IOException e) { Log.e(TAG, "Failed to copy file", e); } finally { try { if (in != null) { in.close(); } if (out != null) { out.close(); } } catch (IOException e) { Log.e(TAG, "Failed to close stream", e); } } } private void copyFile(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } } ``` 在这个例子中,`copyFileFromAssets()`方法接受一个文件名作为参数,并使用`AssetManager`从应用程序的`assets`文件夹中打开该文件的输入流。然后,它创建一个指向应用程序内部存储的文件输出流,并使用`copyFile()`方法将输入流中的数据复制到输出流中。最后,它关闭了输入和输出流。 要使用此代码,请将其添加到您的`Activity`或`Service`中,并在需要时调用`copyFileFromAssets()`方法,例如: ```java copyFileFromAssets("example_file.txt"); ``` 请注意,此方法将文件复制到应用程序的内部存储中,而不是外部存储或SD卡。如果您需要将文件复制到其他位置,请相应地更改代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值