package com.rpsg.rpg.core;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.JsonReader;
import com.badlogic.gdx.utils.JsonValue;
/**
* GDX-RPG I/O 类
*/
public class File {
private static JsonReader jsonReader;
/**
* 将一个对象存储到硬盘上
*/
public static void save(Serializable o, String filePath){
try {
FileOutputStream fos = new FileOutputStream(Gdx.files.local(filePath).file());
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(o);
oos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 从路径中读取对象<i>(可能为null)</i>
*/
public static Serializable load(String fileName) {
try {
Object o;
FileInputStream fis = new FileInputStream(Gdx.files.local(fileName).file());
ObjectInputStream ois = new ObjectInputStream(fis);
o = ois.readObject();
ois.close();
return (Serializable)o;
} catch (Exception e) {
return null;
}
}
/**
* 从文件中读取内容并把内容返回为{@link String}
*/
public static String readString(String fileName) {
return Gdx.files.internal(fileName).readString("utf-8");
}
/**
* 从文件中读取{@link JsonValue json}
*/
public static JsonValue readJSON(String fileName) {
return (jsonReader == null ? jsonReader = new JsonReader() : jsonReader).parse(Gdx.files.internal(fileName));
}
}