有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android Libgdx,如何写入内部文件?

我有一个严重的问题,我需要导出数据到一个文件和代码它的好,我没有任何错误或异常,这里的代码

public static void writeString(String path, String line, boolean append){
    FileHandle file = Gdx.files.local(path);
    file.writeString(line, append);
}

文件“prueba”。它是空的。 我在这里使用代码:

Utilities.writeString("prueba.txt", "Hello world!", false);
System.out.println("OUTPUT: "+Utilities.getLine("prueba.txt"));

这就是输出:

I/System.out: OUTPUT:

在PC上一切正常,只有在安卓系统中我才有“错误”

对不起,我的英语很差:/


共 (3) 个答案

  1. # 1 楼答案

    最好的方法是使用BufferedWriter,如下所示:

    BufferedWriter outColF = null;
        try {
            if(!Gdx.files.local(DIR).exists())
                Gdx.files.local(DIR).mkdirs();
            if(YOUR_FILE.exists())
                YOUR_FILE.delete();
            outColF = new BufferedWriter(new OutputStreamWriter(YOUR_FILE.write(true)));
            outColF.write(OBJECT);
            } catch (Throwable e) {
        } finally {
            try {
                if (outColF != null) outColF.close();
    
            } catch (IOException e) {
            }
        }
    

    这种方法适用于Android和桌面

  2. # 2 楼答案

    尝试添加:

    file.close();
    

    行后:

    file.writeString(....)
    
  3. # 3 楼答案

    您不能在LibGdx的内部文件存储上写入,因为它只能读取

    FileHandle fileHandle= Gdx.files.internal(String path);
    

    您可以将LibGdx的本地文件存储用于相同的目的。这个存储在Android上称为Internal storage。您可以读取和写入此存储,但它是应用程序的专用存储,因此只有您的应用程序才能访问它

    FileHandle file = Gdx.files.local(String path);
    

    下面的代码足以在存储在本地文件存储中的prueba.txt上写入HELLO WORLD

    FileHandle file = Gdx.files.local("prueba.txt");
    file.writeString("HELLO WORLD", false);            //write to file
    System.out.println(charString=file.readString());   //read file
    

    编辑

    如果要在外部存储器上写入,请使用:

    FileHandle file = Gdx.files.external(String path);
    

    确保您对AndroidManifest.xml文件具有这两个权限

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

    如果您的Android目标SDK大于或等于API 23,则此权限是不够的。在继续任何与外部存储相关的工作之前,您需要获得用户的运行时权限。对于当前targetSdkVersion,请检查android build.gradle文件的defaultConfig,如果未显示其检查AndroidManifest.xml文件