NativeScript:如何将文件从apps文件夹复制到用户可访问的文件夹?

皮埃尔·亚历山大·马塞多

我想将storage.db复制到documents或downloads文件夹。获取文件路径非常容易:

const filePath = application.android.context.getDatabasePath("storage.db").getAbsolutePath();

但是,将文件复制到用户有权访问的文件夹并不是一件容易的事。我在整个论坛上进行了搜索,但发现没有任何有用的案例。

我将NativeScript 4.0.1与香草JS结合使用。

皮埃尔·亚历山大·马塞多

我终于找到了解决方案。我已经看到很多用户尝试实现这一目标,希望对您有帮助。

将此添加到您的AndroidManifest.xml中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

安装本地脚本权限:

npm i nativescript-permissions

寻求许可:

const permissions = require('nativescript-permissions');
permissions.requestPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE, "");

需要必要的模块:

const fileSystemModule = require("tns-core-modules/file-system");
const application = require("application");

然后,在需要使用此功能的地方创建它:

function copyFile() {
    var myInput = new java.io.FileInputStream(appModule.android.context.getDatabasePath("storage.db").getAbsolutePath());
    
    var myOutput = new java.io.FileOutputStream("/storage/emulated/0/databases/storage.db");

    try {
        var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.class.getField("TYPE").get(null), 1024);
        var length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }
    }
    catch (err) {
        console.info("Error", err);
    }


    //Close the streams
    myOutput.flush();
    myOutput.close();
    myInput.close();
}
exports.copyFile = copyFile;

就我而言,文件storage.db将被复制到/ storage / emulated / 0 / databases。如果需要创建文件夹,请执行以下操作:

try {
        var javaFile = new java.io.File("/storage/emulated/0/newfolder");
        if (!javaFile.exists()) {
            javaFile.mkdirs();
            javaFile.setReadable(true);
            javaFile.setWritable(true);
        }
    }
    catch (err) {
        console.info("Error", err);
    }

如果目标文件夹中的文件名与要复制的文件名相同,则需要先将其删除。这就是为什么您应该创建一个特定的文件夹以确保其为空的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将文件从“资产”文件夹复制到sdcard?

如何将文件从文件夹和子文件夹复制到R中的另一个文件夹?

如何将当前目录的文件复制到Dockerfile中的文件夹

如何将资源文件夹从jar复制到程序文件中

如何将CSS文件从源文件夹捆绑和复制到dist文件夹?

如何将CD复制到最近的具有bash的.git文件夹的父文件夹?

如何将War文件复制到多个文件夹?

如何将文件从特定文件夹复制到C#中的共享文件夹?

如何将车把文件复制到dist文件夹

如何将一个文件复制到所有子文件夹

python:如何将文件夹的完整路径复制到其他文件夹

如何将文件复制到Azure Function bin文件夹中?

如何将文件从列表复制到新文件夹?

如何将系统中的所有.sol文件复制到特定文件夹

如何将列表中的特定文件从子文件夹复制到文件夹?

如何将文件从URL复制到文档文件夹?

如何将文件夹复制到以sysdate重命名的新文件夹?

如何使用VBA将包含文件的文件夹复制到FTP文件夹?

Gradle:如何将Servlet JARS复制到WAR文件中的文件夹?

如何将文件复制到隐藏文件夹

如何将所有文件从txt文件的路径复制到文件夹?

如何将一百个文件从文件夹复制到文件夹?

如何将一个文件夹复制到另一个文件夹

如何将文件夹中的文件复制到多个文件夹中

如何将文件夹复制到 Makefile 中的另一个文件夹?

如何将特定文件夹/文件复制到工件?

如何将文件复制到 Android 的 /system 文件夹

如何将文件夹内容复制到dockerfile中的现有文件夹

如何将图像从多个子文件夹复制到公共文件夹并重命名?