【问题标题】:How to view and edit files that were created and are used by my Android app?如何查看和编辑我的 Android 应用程序创建和使用的文件?
【发布时间】:2021-01-09 16:10:10
【问题描述】:

所以我创建了这个简单的应用程序来询问用户问题(这就像一个真心话大冒险游戏)。 问题保存在 SD-Card > Android > data > [package name] > files 中的 .json 文件中。

但是,我希望通过手动编辑或交换保存问题的 .json 文件来添加或删除这些问题(以便这些新问题随后出现在应用程序中)。

我已经了解应用程序需要在某处调用 getExternalFilesDir() 方法,以便首先创建我可以在设备的文件管理器中找到的目录。但是 - 正如您可能已经猜到的那样 - 当我打开该目录时,“文件”文件夹是空的。 (我知道 .json 文件必须在其中,因为应用程序运行良好!)

现在我的问题是: 有什么方法可以查看和编辑这些 .json 文件吗?我不在乎解决方案是否包括使用 PC 或某些程序。 或者我不应该将问题保存在 .json 文件中,而是保存在 .txt 文件中?还是我应该使用不同的目录来保存我的问题文件??

我希望得到详细的回答,因为我显然是新手。

提前致谢!

P.S.:我可以根据要求提供代码。

编辑:我不想从代码中编辑这些文件,我已经知道该怎么做。我的问题特别是关于是否有可能使用文本编辑器编辑 json 文件或使用复制粘贴交换文件。

代码:

 public void copy() {
    Context Context = getApplicationContext();
    String DestinationFile = Context.getExternalFilesDir(null).getPath() + File.separator + "fragenAdvanced.json";
    
    if (!new File(DestinationFile).exists()) {
        try {
            CopyFromAssetsToStorage(Context, "fragenAdvanced.json", DestinationFile);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

private void CopyFromAssetsToStorage(Context Context, String SourceFile, String DestinationFile) throws IOException {
    InputStream IS = Context.getAssets().open(SourceFile);
    OutputStream OS = new FileOutputStream(DestinationFile);
    CopyStream(IS, OS);
    OS.flush();
    OS.close();
    IS.close();
}
private void CopyStream(InputStream Input, OutputStream Output) throws IOException { //brauche ich das?
    byte[] buffer = new byte[5120];
    int length = Input.read(buffer);
    while (length > 0) {
        Output.write(buffer, 0, length);
        length = Input.read(buffer);
    }
}

这就是我将文件保存到存储器的方式。

【问题讨论】:

  • Android > data > [package name] > files. 加油!你是程序员吗?您的意思是:/storage/emulated/0/Android/data/<packagename>/files?是的?那么它与可移动的micro sd卡无关。
  • 我无法相信,如果您可以将文件保存到 getExternalFilesDir(null),那么如果您再次使用 getExternalFilesDir(null) 作为读取文件的路径,您以后将无法使用它。每个文件管理器应用程序也可以显示该目录的内容。然后用户就可以用通常的方式打开文件了。
  • @blackapps 我的意思是外部 SDCard 上的目录。它不会在文件管理器中显示 json 文件
  • 请告诉该目录的完整路径(就像我一样)。在使用过的设备上运行哪个 Android 版本?正在使用哪个文件管理器应用程序?
  • @blackapps /sdcard/Android/data/alex.com.wow/files/fragenAdvanced.json 如上所述。我使用的是 Android 10。我首先尝试了 Android 中预装的设备管理器。然后我尝试了“File Manager Plus”,并将手机连接到我的 Windows PC 并使用它的资源管理器。您可能知道 Android Studio 附带的“设备文件资源管理器”。那是唯一的资源管理器,我确实在其中看到了那些 json 文件。任何想法为什么? (我从那里复制了上面的路径)

标签: java android json file storage


【解决方案1】:

有 3 种方法可以保存您的用户数据,但您的方法并不安全,因为用户可以访问它。

  • 第一种方法是将用户数据保存在 SharedPreferences 中,使用起来非常简单,但是如果用户清除了应用程序捕获,数据将被删除(您可以将您的 json 转换为字符串并将其保存在 sharedPreferences 中,用于转换字符串到 json 你可以使用 Gson 库)

  • 第二种方式是使用SQlite,将数据保存在本地数据库中,会被clear stroge删除,对重要数据还是不好

  • 最后一种方法是使用远程数据库并从 api 获取数据

【讨论】:

  • 谢谢,但你理解错了。我希望用户能够访问文件。我的问题是,当我想这样做时,我 - 用户 - 无法找到和编辑这些文件。当然这种方式不安全,但这不是我的本意
猜你喜欢
  • 2011-07-05
  • 2015-05-20
  • 2020-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 2021-07-21
  • 2015-10-24
  • 2016-05-23
相关资源
最近更新 更多