From 2e1d4de1cd4c2717412732a9c7d9f334d776428f Mon Sep 17 00:00:00 2001 From: drdev Date: Mon, 4 May 2015 23:48:54 +0000 Subject: [PATCH] Avoid using java.nio since it breaks Quest Mode in Android app --- .../src/main/java/forge/util/FileUtil.java | 29 +++++++++++++++++++ .../main/java/forge/quest/io/QuestDataIO.java | 7 +---- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/forge-core/src/main/java/forge/util/FileUtil.java b/forge-core/src/main/java/forge/util/FileUtil.java index be8a8468fff..c77afd6bf94 100644 --- a/forge-core/src/main/java/forge/util/FileUtil.java +++ b/forge-core/src/main/java/forge/util/FileUtil.java @@ -98,6 +98,35 @@ public final class FileUtil { return dir.delete(); } + public static void copyFile(String sourceFilename, String destFilename) { + File source = new File(sourceFilename); + if (!source.exists()) { return; } //if source doesn't exist, nothing to copy + + InputStream is = null; + OutputStream os = null; + try { + is = new FileInputStream(source); + os = new FileOutputStream(new File(destFilename)); + byte[] buffer = new byte[1024]; + int length; + while ((length = is.read(buffer)) > 0) { + os.write(buffer, 0, length); + } + } + catch (Exception e) { + e.printStackTrace(); + } + finally { + try { + is.close(); + os.close(); + } + catch (IOException e) { + e.printStackTrace(); + } + } + } + public static void writeFile(String filename, String text) { FileUtil.writeFile(new File(filename), text); } diff --git a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java index 11786ccacdb..e965d8c3e92 100644 --- a/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java +++ b/forge-gui/src/main/java/forge/quest/io/QuestDataIO.java @@ -50,8 +50,6 @@ import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import java.io.*; import java.lang.reflect.Field; -import java.nio.file.Files; -import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; @@ -369,12 +367,9 @@ public class QuestDataIO { final File f = new File(ForgeConstants.QUEST_SAVE_DIR, qd.getName()); //Copy the save file in case the save fails - if (Files.exists(new File(f + ".dat").toPath())) { - Files.copy(new File(f + ".dat").toPath(), new File(f + ".dat.bak").toPath(), StandardCopyOption.REPLACE_EXISTING); - } + FileUtil.copyFile(f + ".dat", f + ".dat.bak"); QuestDataIO.savePacked(f + ".dat", xStream, qd); // QuestDataIO.saveUnpacked(f + ".xml", xStream, qd); - } catch (final Exception ex) { //BugReporter.reportException(ex, "Error saving Quest Data.");