seppuku/src/main/java/me/rigamortis/seppuku/api/util/FileUtil.java

186 lines
5.5 KiB
Java

package me.rigamortis.seppuku.api.util;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import me.rigamortis.seppuku.Seppuku;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
/**
* @author noil
* @since 12/1/19 @ 4:16 PM
*/
public class FileUtil {
/**
* Tries to create a file reader
*/
public static FileReader createReader(File file) {
if (file.exists()) {
try {
return new FileReader(file);
} catch (FileNotFoundException e) {
Seppuku.INSTANCE.getLogger().log(Level.WARNING, "Error creating reader: File not found exception");
}
}
return null;
}
/**
* Tries to close a file reader
*/
public static void closeReader(FileReader reader) {
try {
reader.close();
} catch (IOException e) {
Seppuku.INSTANCE.getLogger().log(Level.WARNING, "Error closing reader: IO exception");
}
}
/**
* Creates a directory in the client's folder
*/
public static File createDirectory(String dir) {
File folder = new File(Seppuku.INSTANCE.getConfigManager().getConfigDir(), dir);
if (!folder.exists())
folder.mkdir();
return folder;
}
/**
* Creates a json file in a directory
*/
public static File createJsonFile(File dir, String name) {
return new File(dir, name + ".json");
}
/**
* Removes and existing file or creates a new file
*/
public static File recreateFile(File file) {
if (file.exists()) {
file.delete();
}
try {
file.createNewFile();
} catch (IOException e) {
System.err.println("IOException thrown, could not recreate file.");
}
return file;
}
/**
* Saves a json object to a file
*/
public static void saveJsonFile(File file, JsonObject jsonObject) {
try {
//file.createNewFile();
FileWriter writer = new FileWriter(file);
Throwable throwable = null;
try {
writer.write(new GsonBuilder().setPrettyPrinting().create().toJson(jsonObject));
} catch (Throwable var6_9) {
throwable = var6_9;
throw var6_9;
} finally {
if (throwable != null) {
try {
writer.close();
} catch (Throwable var6_8) {
throwable.addSuppressed(var6_8);
}
} else {
writer.close();
}
}
} catch (IOException e) {
file.delete();
}
}
public static List<String> read(final File inputFile) {
final List<String> fileContentList = new ArrayList<>();
FileReader fileReader = null;
BufferedReader bufferedFileReader = null;
try {
fileReader = new FileReader(inputFile);
bufferedFileReader = new BufferedReader(fileReader);
String currentReadLine;
while ((currentReadLine = bufferedFileReader.readLine()) != null) {
fileContentList.add(currentReadLine);
}
} catch (FileNotFoundException e) {
System.err.println("FileNotFoundException thrown, make sure the file exists.");
} catch (IOException e) {
System.err.println("IOException thrown, can't read the file's content.");
} finally {
try {
if (bufferedFileReader != null) {
bufferedFileReader.close();
}
if (fileReader != null) {
fileReader.close();
}
} catch (IOException e) {
System.err.println("IOException thrown, can't close the file reader.");
}
}
return fileContentList;
}
public static String write(final File outputFile, final List<String> writeContent, boolean override) {
BufferedWriter bufferedFileWriter = null;
FileWriter fileWriter = null;
String message = "";
try {
fileWriter = new FileWriter(outputFile, !override);
bufferedFileWriter = new BufferedWriter(fileWriter);
for (final String outputLine : writeContent) {
bufferedFileWriter.write(outputLine);
bufferedFileWriter.flush();
bufferedFileWriter.newLine();
}
message = "Completed writing to the file.";
} catch (IOException e) {
message = "IOException thrown while attempting to write.";
} finally {
try {
if (bufferedFileWriter != null) {
bufferedFileWriter.close();
}
if (fileWriter != null) {
fileWriter.close();
}
} catch (IOException e) {
message = "IOException thrown while attempting to close the file writer.";
}
}
return message;
}
public static boolean ensureExistance(File targetFile) {
if (!targetFile.exists()) {
try {
targetFile.createNewFile();
} catch (IOException e) {
System.err.println("IOException thrown, can't create file.");
}
}
return targetFile.exists();
}
}