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
文件,如果未显示其checkAndroidManifest.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(....)