Files
TaipanClone/src/logic/FileSaving.java

86 lines
3.0 KiB
Java

package logic;
import java.io.*;
/**
* 2019-03-10 (Edited on 2019-03-19)
* Authors: Harkamal Randhawa
* FileSaving Class allows the user to save the current status of the game and to continue from where they left off.
*/
public class FileSaving extends Player implements Serializable {
/**
* loads the file of type player which contains all the player instances
* @return player
*/
public Player loadFile() {
try {
//Load the previous save file
InputStream in = new FileInputStream(new File("src/saves/playerSave.txt"));
return getPlayer(in);
}
catch (Exception e) {
try {
//Loads the player save in a alternate location if the original location isn't available
InputStream in = new FileInputStream(new File("saves/playerSave.txt"));
return getPlayer(in);
}
catch(Exception e2){
//Only it's impossible for the player to load a file
return null;
}
}
}
/**
* Only run inside this class, returns save files. Throws exceptions if it fails
* @param in The input stream from the previous save(If there is one)
* @return Returns the player object from the previous save file
* @throws IOException Only if the file cannot be read
* @throws ClassNotFoundException Only if there is no file available for the player to load
*/
private Player getPlayer(InputStream in) throws IOException, ClassNotFoundException {
ObjectInputStream inObject = new ObjectInputStream(in);
Player player = (Player) inObject.readObject();
in.close();
inObject.close();
return player;
}
/**
* Saves the file of type player which contains all the player instances
* @param player The player object being saved
*/
public boolean saveFile(Player player){
try{
//Saves the object to a file
FileOutputStream out = new FileOutputStream(new File("src/saves/playerSave.txt"));
ObjectOutputStream outObject = new ObjectOutputStream(out);
outObject.writeObject(player);
out.close();
outObject.close();
//returns true if program can save the file
return true;
}
catch (Exception e) {
try {
//If the player is running from the terminal it changes the files location, this catch statement fixes that
FileOutputStream out = new FileOutputStream(new File("saves/playerSave.txt"));
ObjectOutputStream outObject = new ObjectOutputStream(out);
outObject.writeObject(player);
out.close();
outObject.close();
//returns true if the program can save the file
return true;
}
catch(Exception e2){
//returns false if it's impossible for the player to save the file
return false;
}
}
}
}