文章目录
- 前言
- FileHander
-
- FileHande de 使用
- Preferenecs 键值对
-
- Preferenecs de 使用
- 尝试
前言
这是第二节的番外,介绍在第二节提到过的
com.badlogic.gdx.files.FileHande
类
FileHander
com.badlogic.gdx.files.FileHande
存储一个文件的引用。 FileHande 的构造函数有:
- FileHande(
) : 传入一个绝对路径(别用反斜杠!!!)或相对路径(项目文件下),指向路径文件(夹)java.lang.String
-
FileHande(FileHande) : 传入一个 FileHande 对象并指向其指向的文件(夹)
当然你也可以使用
获取 Filehande :com.badloc.gdx.Gdx.input
- internal( String ) : 获取路径下(assets下的相对路径)的文件(夹),只读。一般作为图片读取等
- local( String ) : 获取本地文件(应用私有目录),可读写。用来保存游戏数据
-
external( String ) : 获取外部文件(C:\Users\当前用户\或SD卡),可读写。用来保存较大数据或导出数据等
Tips : 通过 external(String) 获取的文件(夹)必须在 C:\Users\用户 下,如果不在的话,则使用 FileHande( String ) 构造函数获取。
FileHande de 使用
FileHande 不止给纹理提供图片这个用处而已,它含有对文件(包含文件夹)的各种操作:
//获取文件的名称,含后缀名
String fileName= file.name() ;
//获取文件的路径,含后缀名
String filePath= file.path() ;
//判断文件是否存在
boolean isFileExists= file.exists() ;
//获取文件的父文件夹
FileHande parentFile= file.parent();
//获取文件的长度
long length= file.length();
//判断文件是否为文件夹
boolean isDirecroty= file.isDirecroty();
//读取文件内容
String readStr= file.readString();
//读取二进制内容
byte[] readBytes= file.readByte();
final boolean APPEND=true,NO_APPEND=false;
//写入字符串
file.writeString("hello,world",APPEND);
file.writeString("hello,World",NO_APPEND);
//写入二进制内容
file.writeBytes(bytes,APPEND);
//将文件复制到fileHander处
file.copyTo(fileHande);
//将文件移动到fileHander处
file.moveTo(fileHande);
//删除文件
file.delete();
//删除文件夹
file.deleteDirecroty();
Preferenecs 键值对
除了 FileHande ,libGDX还提供了
com.badlogic.gdx.preferenecs
类来存储键值对,使用
com.badlogic.gdx.Gdx.app.getPreferenecs(String arg0)
来获取 .prefs 文件:
Tips : Preferenecs 的真正存储路径是 C:\Users(用户)\ .prefs\
Preferenecs de 使用
//修改键key的值为value
prefs.put("key",value);
//将结果真正写入文件,put()之后调用。tips:尽量在所有put()之后调用
prefs.flush();
//获取键key的值
prefs.get("key");
//如果键key不存在,则返回defaultValue
prefs.get("key",defaultValue);
尝试
接下来,我们将制作一个有关文件操作的测试应用:
package com.libGDX.test;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.files.FileHandle;
public class Test extends ApplicationAdapter {
@Override
public void create() {
super.create();
FileHandle file=new FileHandle("C://test/test.txt");
//如果文件不存在,将创建文件和文件夹,false表示不追加,而是覆盖原文件内容
file.writeString("hello,libGDX FileHande!!!", false);
System.out.println(file.readString());
//删除文件的父文件夹,也会删除文件
file.parent().delete();
Preferences prefs=Gdx.app.getPreferences("test.prefs");
//如果文件不存在,将创建文件
prefs.putInteger("name", 25041);/*25041:D*/
//写入文件
prefs.flush();
System.out.println(prefs.getInteger("name"));
}
}
运行结果:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iZzEWMmJzMwEmMwAjYmFTO5YGOkdTMlNzN4kzYzcjYz8CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)