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

时间:2017-05-19 11:11:25

标签: java android libgdx

我有一个严重的问题,我需要将数据导出到一个文件及其代码,我没有任何错误或异常,这里是代码。

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

文件' prueba.txt'它是空的。 我在这里使用代码:

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

这就是输出:

  

I / System.out:OUTPUT:

在PC上所有工作都很好,只有在android中我才会出现错误'

PD:对不起我的英文,非常糟糕:/

3 个答案:

答案 0 :(得分:0)

尝试添加:

file.close();

行后:

file.writeString(....)

答案 1 :(得分:0)

您无法写入LibGdx的内部文件存储,只能读取。

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

您可以使用LibGdx的本地文件存储。这些存储在Android上名为man page here。您可以读取和写入此存储,但它是您应用程序的私有存储,因此只有您的应用程序才能访问它。

HELLO WORLD

以下代码足以在prueba.txt上写入存储在本地文件存储中的FileHandle file = Gdx.files.local("prueba.txt"); file.writeString("HELLO WORLD", false); //write to file System.out.println(charString=file.readString()); //read file

AndroidManifest.xml

确保您拥有<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 文件

的这两项权限
build.gradle

如果您的Android目标SDK大于或等于API 23,则此权限是不够的,您需要在继续执行与EXTERNAL_STORAGE相关的任何工作之前获取运行时权限。对于当前的targetSdkVersion,检查你的default AndroidManifest.xml文件的defaultConfig,如果没有出现他们的check -ea文件。

答案 2 :(得分:0)

最好的方法是使用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和桌面。