package de.maxgb.minecraft.second_screen.data; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import net.minecraftforge.common.DimensionManager; import de.maxgb.minecraft.second_screen.util.Logger; /** * Class which should manage all file related operations * @author Max * */ public class DataStorageDriver { private final static String TAG = "DataStorageDriver"; public static File getSaveDir() { return new File(DimensionManager.getCurrentSaveRootDirectory(), "secondscreen"); } /** * Reads lines from given file * @param file * @return lines, null if exception */ private static ArrayList<String> readFromFile(File file) { if (!file.exists()) { Logger.i(TAG, "File: " + file.getPath() + " does not exist"); return null; } ArrayList<String> lines = new ArrayList<String>(); try { BufferedReader reader = new BufferedReader(new FileReader(file)); String line = reader.readLine(); while (line != null) { lines.add(line); line = reader.readLine(); } reader.close(); return lines; } catch (FileNotFoundException e) { Logger.w(TAG, "File: " + file.getAbsolutePath() + " not found"); return null; } catch (IOException e) { Logger.e(TAG, "Failed to read from file: " + file.getAbsolutePath(), e); return null; } } /** * Reads from a file in the world folder * @param filename * @return lines of file, null if error */ public static ArrayList<String> readFromWorldFile(String filename) { File f = new File(getSaveDir(), filename); return readFromFile(f); } private static void writeToFile(File file, ArrayList<String> lines) { try { getSaveDir().mkdirs(); file.createNewFile(); file.setReadable(true); file.setWritable(true); BufferedWriter writer = new BufferedWriter(new FileWriter(file)); for (String line : lines) { writer.append(line); writer.newLine(); } writer.flush(); writer.close(); } catch (IOException e) { e.printStackTrace(); Logger.e(TAG, "Failed writing the String Array to the file: " + file.getAbsolutePath(), e); } } /** * Writes to a file in the world folder * @param filename * @param lines */ public static void writeToWorldFile(String filename, ArrayList<String> lines) { File f = new File(getSaveDir(), filename); writeToFile(f, lines); } }