I have this Java class
package com.cf.utils;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.UUID;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import com.cf.CoreFaction;
import com.cf.faction.Faction;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.DimensionManager;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.relauncher.Side;
public class FactionUtils {
public static boolean saveFaction(Faction f) {
if (Utils.isServer()) {
JSONObject obj = new JSONObject();
obj.put("Name", f.getName());
obj.put("Owner", f.getOwner().toString());
JSONArray members = new JSONArray();
for (UUID u : f.getMembers()) {
members.add(u.toString());
}
obj.put("Members", members);
File dir = new File(DimensionManager.getCurrentSaveRootDirectory() + "/factions");
if (!dir.exists())
dir.mkdirs();
try (FileWriter file = new FileWriter(
DimensionManager.getCurrentSaveRootDirectory() + "/factions/" + f.getName() + ".json")) {
file.write(obj.toJSONString());
file.close();
return true;
} catch (IOException e) {
e.printStackTrace();
}
}
return false;
}
public static void deleteFaction(Faction f) {
if (Utils.isServer()) {
File file = new File(DimensionManager.getCurrentSaveRootDirectory() + "/factions/" + f.getName() + ".json");
if (file.exists()) {
if(file.delete()) { //THIS RETURNS FALSE
for (UUID p : f.getMembers()) {
Utils.sendMessage(p, Utils.getTranslation("faction.disbanded", TextFormatting.RED));
}
} else
Utils.sendMessage(f.getOwner(), Utils.getTranslation("faction.disband.error", TextFormatting.RED));
} else
System.out.println("Can't find the file");
}
}
public static Faction getFaction(UUID player) {
for (Faction f : getAllFactions()) {
if (f.getMembers().contains(player))
return f;
}
return null;
}
public static Faction getFaction(String name) {
for (Faction f : getAllFactions()) {
if (f.getName().equalsIgnoreCase(name))
return f;
}
return null;
}
public static ArrayList<Faction> getAllFactions() {
ArrayList<Faction> list = new ArrayList<Faction>();
if (Utils.isServer()) {
File dir = new File(DimensionManager.getCurrentSaveRootDirectory() + "/factions");
if (!dir.exists())
return list;
File[] factions = dir.listFiles();
for (File f : factions) {
JSONParser parser = new JSONParser();
try {
Object obj = parser.parse(new FileReader(f));
JSONObject jsonObject = (JSONObject) obj;
JSONArray members = (JSONArray) jsonObject.get("Members");
Faction faction = new Faction((String) jsonObject.get("Name"),
UUID.fromString((String) jsonObject.get("Owner")));
ArrayList<UUID> ids = new ArrayList<UUID>();
for (int i = 0; i < members.size(); i++) {
ids.add(UUID.fromString(members.get(i).toString()));
}
faction.setMembers(ids);
list.add(faction);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return list;
}
}
When i call the method deleteFaction i want to delete a specific file, but despite the file.exists() returns true, the file.delete() returns false and i can't figure out why. So why the file i'm pointing cannot be deleted?