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

Java Android Libgdx,如何写入内部文件?,java,android,libgdx,Java,Android,Libgdx,我有一个严重的问题,我需要导出数据到一个文件和代码它的好,我没有任何错误或异常,这里的代码 public static void writeString(String path, String line, boolean append){ FileHandle file = Gdx.files.local(path); file.writeString(line, append); } file.close(); file.writeString(....) 文件“prue

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

public static void writeString(String path, String line, boolean append){
    FileHandle file = Gdx.files.local(path);
    file.writeString(line, append);
}
file.close();
file.writeString(....)
文件“prueba.txt”为空。 我在这里使用代码:

Utilities.writeString("prueba.txt", "Hello world!", false);
System.out.println("OUTPUT: "+Utilities.getLine("prueba.txt"));
file.close();
file.writeString(....)
这就是输出:

file.close();
file.writeString(....)
I/System.out:输出:

file.close();
file.writeString(....)
在PC上一切正常,只有在安卓系统中我才有“错误”

file.close();
file.writeString(....)

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

尝试添加:

file.close();
file.writeString(....)
行后:

file.close();
file.writeString(....)

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

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

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

file.close();
file.writeString(....)
FileHandle file = Gdx.files.local(String path);
以下代码足以在存储在本地文件存储中的
prueba.txt
上写入
HELLO WORLD

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

file.close();
file.writeString(....)
如果要在外部存储器上写入,请使用:

file.close();
file.writeString(....)
FileHandle file = Gdx.files.external(String path);
确保您对
AndroidManifest.xml
文件有这两个权限

file.close();
file.writeString(....)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


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

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

file.close();
file.writeString(....)
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和桌面。

检查文档。无法在Android上写入内存。请使用完整路径。不仅仅是一个文件名。在Android上,您可以写入内部、外部和可移动内存。@MrVansork请显示
实用程序.getLine()
方法的代码?我试过了,但不知道为什么不起作用,我这样做是正确的,在我的AndroidManifest中,我有在外部和内部存储上读写的权限,我不明白这个问题有什么原因,因为在PC机上一切正常,但在Android上没有,我使用的是Gdx.files.local(),我的SDK API版本是25。我已经在Android上测试过,工作正常,你能给我看一下
Utilities.getLine()
method?公共静态字符串getLine(字符串路径)的代码吗{String line=Gdx.files.internal(path).readString();return line;}如果正如您所说,Android将Libgdx的local视为internal,那么为什么我需要在清单中编辑外部存储的权限?@MrVansork您在本地存储上写的不是internal[Libgdx term],那么为什么您要通过
Gdx.files.internal(path)访问
file.close();
file.writeString(....)