当前位置: 首页 > 知识库问答 >
问题:

需要帮助创建json文件及其内容

訾朗
2023-03-14

react-native中创建android模块需要一点帮助

@ReactMethod
public string write(string content) {
    var folder = "NovelManager";
    File path = Paths.get(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), folder);
    var fullPath = Paths.get(path, "NovelManager.backup.json");

    makeDir(path);
    File file = new File(path, "NovelManager.backup.json");
    if (!file.exists())
        file = file.createNewFile();

    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8));

    out.write(content);
    out.close();

    return file.getAbsolutePath();
}

private void makeDir(string dirPath){
    var dir = new File(dirPath);
    if (!dir.exists())
    dir.mkdir();
}
// DownloadFileModule.java
package com.novelmanager;

import android.view.View;
import android.app.Activity;

import java.io.BufferedWriter;
import java.io.Console;
import java.io.File;
import java.io.FileWriter;
import android.os.Environment;
import java.io.OutputStreamWriter;
import java.io.FileOutputStream;
import java.nio.charset.StandardCharsets;

import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.UiThreadUtil;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;

public class DownloadFileModule extends ReactContextBaseJavaModule {
    @Override
    public String getName() {
        return "DownloadFileModule";
    }

    @ReactMethod(isBlockingSynchronousMethod = true)
    public String write(String content) {
        if (content == null || content == "")
            return "";
        try {

            String folder = "NovelManager";
            String fileName = "NovelManager.backup.json";
            String downloadFolderPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
                    .getPath();
            String dirPath = compine(downloadFolderPath, folder);
            File dir = new File(dirPath);
            if (!dir.exists())
                dir.mkdir();

            String path = compine(downloadFolderPath, folder, fileName);

            File file = new File(path);
            if (!file.exists())
                file.createNewFile();

            BufferedWriter out = new BufferedWriter(
                    new OutputStreamWriter(new FileOutputStream(file), StandardCharsets.UTF_8));

            out.write(content);
            out.close();
            return file.getPath();
        } catch (Exception e) {
            return e.getMessage();
        }

    }

    private String compine(String... more) {
        String url = more[0];

        for (int i = 1; i < more.length; i++) {
            String str = more[i];
            if (str.startsWith("/"))
                str = str.substring(1);
            if (str.endsWith("/"))
                str = str.substring(0, str.length() - 1);

            if (url.endsWith("/"))
                url = url.substring(0, url.length() - 1);

            url = url + "/" + str; // relative url
        }

        return url; // relative url
    }

    DownloadFileModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }
}

共有1个答案

曹奇文
2023-03-14

您可以使用Apache FileUtils执行所有必需的操作。

参考:https://commons.apache.org/proper/commons-io/javadocs/api-2.5/index.html?org/apache/commons/io/fileutils.html

    FileUtils.cleanDirectory(path); //clean out directory (this is optional)
    FileUtils.forceDelete(path); //delete directory
    FileUtils.forceMkdir(path); //create directory
    FileUtils.touch(file)); //create new file
 类似资料:
  • 问题内容: 我正在使用Glassfish和JSF构建我的第一个Java EE Web应用程序。我对条件查询还很陌生,我有一个需要执行的查询,但是javaee6教程的示例似乎有些稀疏。无论如何,我很难创建查询。 目标:我想让公司存储最多的文件。公司与Documents有OneToMany关系。文档与多个表具有ManyToOne关系,“用户类型”列将它们区分开。 MySQL查询: 谢谢 --updat

  • 我正在尝试使用使用密码摘要模式的 Web 服务,并且我的 Java 应用程序中有这些功能来生成随机随机数、创建日期和密码摘要。我无法克服身份验证失败错误,并且文档不太清楚他们是否需要 SHA-1 或 MD5,因为它顺便提到了两者。我尝试了MD5而不是SHA-1,我得到了相同的结果。我设法通过 SoapUI 上的测试使请求工作,但我不知道该应用程序如何生成摘要/随机数。任何帮助,不胜感激。 下面是我

  • 首先,我是C、C++、C#、Android和Swift的开发人员,但我绝对没有JavaScript、PHP或Web开发经验。 即只接受整数值的输入。 这是刀片代码:

  • 我仍然是Java的新手,我正在努力使这个程序适合我的任务。 问题是: 杰夫在你家附近经营着一家当地的零售店。他已与您签订合同,让您创建一个交互式应用程序,以帮助他增加员工工资。创建一个名为 Details 的类,该类将包含员工 ID 号、名字、姓氏和薪水的获取和设置方法。包括一个名为getUpdateSalary()的方法,该方法将使员工的薪水增加10%。在您的主类中,包括一个名为 () 的静态方

  • 我很难为个人项目设置golang dockerfile。 项目结构为: 该应用程序每5秒打印一个随机哈希,并在其上附加一个时间戳。 文件内容: 日志 go.mod: hash.go: 我拼凑了以下泊坞文件: 然而,我一直得到这个错误(和类似的错误): 我已经在网上搜索了几个小时试图解决这个问题,我真的不明白它有什么问题。当谈到docker文件中的依赖管理时,我怀疑我做错了什么。 我提到我是围棋新手

  • 我正在努力检索基于内容所有者的YouTube分析数据。从这次讨论(获取当前用户的YouTube内容所有者id)中,我了解到我需要查询youtubePartner.contentOwners.list(fetchmine=true)来获取内容所有者信息,其中的Id将被找到。 我纠结的是,当我调用youtubepartner . content owners . list(fetch mine = t