mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
Autoclose FileOutputStreams (#5753)
This commit is contained in:
@@ -17,26 +17,18 @@
|
||||
*/
|
||||
package forge.util;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.Reader;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* FileUtil class.
|
||||
@@ -117,8 +109,8 @@ public final class FileUtil {
|
||||
File source = new File(sourceFilename);
|
||||
if (!source.exists()) { return; } //if source doesn't exist, nothing to copy
|
||||
|
||||
try (InputStream is = new FileInputStream(source);
|
||||
OutputStream os = new FileOutputStream(new File(destFilename))){
|
||||
try (InputStream is = Files.newInputStream(source.toPath());
|
||||
OutputStream os = Files.newOutputStream(new File(destFilename).toPath())){
|
||||
byte[] buffer = new byte[1024];
|
||||
int length;
|
||||
while ((length = is.read(buffer)) > 0) {
|
||||
|
||||
@@ -1,31 +1,5 @@
|
||||
package forge.gui.framework;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.xml.stream.XMLEventFactory;
|
||||
import javax.xml.stream.XMLEventReader;
|
||||
import javax.xml.stream.XMLEventWriter;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLOutputFactory;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.stream.events.Attribute;
|
||||
import javax.xml.stream.events.StartElement;
|
||||
import javax.xml.stream.events.XMLEvent;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.gui.FThreads;
|
||||
import forge.gui.SOverlayUtils;
|
||||
@@ -42,6 +16,19 @@ import forge.util.maps.MapOfLists;
|
||||
import forge.view.FFrame;
|
||||
import forge.view.FView;
|
||||
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.xml.stream.*;
|
||||
import javax.xml.stream.events.Attribute;
|
||||
import javax.xml.stream.events.StartElement;
|
||||
import javax.xml.stream.events.XMLEvent;
|
||||
import java.awt.*;
|
||||
import java.io.*;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* Handles layout saving and loading.
|
||||
*
|
||||
@@ -297,12 +284,9 @@ public final class SLayoutIO {
|
||||
}
|
||||
|
||||
final XMLOutputFactory out = XMLOutputFactory.newInstance();
|
||||
FileOutputStream fos = null;
|
||||
XMLEventWriter writer = null;
|
||||
try {
|
||||
try(FileOutputStream fos = new FileOutputStream(fWriteTo);) {
|
||||
String layoutSerial = getLayoutSerial(file.defaultLoc);
|
||||
|
||||
fos = new FileOutputStream(fWriteTo);
|
||||
writer = out.createXMLEventWriter(fos);
|
||||
final List<DragCell> cells = FView.SINGLETON_INSTANCE.getDragCells();
|
||||
|
||||
@@ -337,15 +321,12 @@ public final class SLayoutIO {
|
||||
}
|
||||
writer.flush();
|
||||
writer.add(EF.createEndDocument());
|
||||
} catch (FileNotFoundException | XMLStreamException e) {
|
||||
} catch (XMLStreamException | IOException e) {
|
||||
// TODO Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
if ( writer != null )
|
||||
try { writer.close(); } catch (XMLStreamException e) {}
|
||||
|
||||
if ( fos != null )
|
||||
try { fos.close(); } catch (IOException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,12 +5,12 @@ import forge.Forge;
|
||||
import forge.gui.GuiBase;
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.nio.file.Files;
|
||||
|
||||
public class LibGDXImageFetcher extends ImageFetcher {
|
||||
@Override
|
||||
@@ -45,11 +45,11 @@ public class LibGDXImageFetcher extends ImageFetcher {
|
||||
FileHandle destFile = new FileHandle(newdespath + ".tmp");
|
||||
System.out.println(newdespath);
|
||||
destFile.parent().mkdirs();
|
||||
OutputStream out = new FileOutputStream(destFile.file());
|
||||
try(OutputStream out = Files.newOutputStream(destFile.file().toPath())) {
|
||||
// Conversion to JPEG will be handled differently depending on the platform
|
||||
Forge.getDeviceAdapter().convertToJPEG(is, out);
|
||||
is.close();
|
||||
out.close(); //close outputstream before destfile.moveto so it can delete the tmp file internally
|
||||
}
|
||||
destFile.moveTo(new FileHandle(newdespath));
|
||||
|
||||
System.out.println("Saved image to " + newdespath);
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
package forge.deck.io;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import forge.game.GameFormat;
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by maustin on 11/05/2017.
|
||||
@@ -28,7 +22,6 @@ public class CardThemedLDAIO {
|
||||
try (FileOutputStream f = new FileOutputStream(file);
|
||||
ObjectOutputStream s = new ObjectOutputStream(f)){
|
||||
s.writeObject(lda);
|
||||
s.close();
|
||||
} catch (IOException e) {
|
||||
System.out.println("Error writing matrix data: " + e);
|
||||
}
|
||||
|
||||
@@ -1,23 +1,5 @@
|
||||
package forge.gamemodes.gauntlet;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeMap;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.thoughtworks.xstream.XStream;
|
||||
import com.thoughtworks.xstream.converters.ConversionException;
|
||||
import com.thoughtworks.xstream.converters.Converter;
|
||||
@@ -28,7 +10,6 @@ import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
import com.thoughtworks.xstream.security.NoTypePermission;
|
||||
import com.thoughtworks.xstream.security.NullPermission;
|
||||
import com.thoughtworks.xstream.security.PrimitiveTypePermission;
|
||||
|
||||
import forge.deck.CardPool;
|
||||
import forge.deck.Deck;
|
||||
import forge.deck.DeckSection;
|
||||
@@ -37,6 +18,14 @@ import forge.item.PaperCard;
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
import forge.model.FModel;
|
||||
import forge.util.IgnoringXStream;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
public class GauntletIO {
|
||||
/** Prompt in text field for new (unsaved) built gauntlets. */
|
||||
@@ -155,11 +144,11 @@ public class GauntletIO {
|
||||
}
|
||||
|
||||
private static void savePacked(final XStream xStream0, final GauntletData gd0) throws IOException {
|
||||
final BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(getGauntletFile(gd0)));
|
||||
final GZIPOutputStream zout = new GZIPOutputStream(bout);
|
||||
try(final BufferedOutputStream bout = new BufferedOutputStream(Files.newOutputStream(getGauntletFile(gd0).toPath()));
|
||||
final GZIPOutputStream zout = new GZIPOutputStream(bout)) {
|
||||
xStream0.toXML(gd0, zout);
|
||||
zout.flush();
|
||||
zout.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static class DeckSectionToXml implements Converter {
|
||||
|
||||
@@ -17,36 +17,6 @@
|
||||
*/
|
||||
package forge.gamemodes.quest.io;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringReader;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.parsers.ParserConfigurationException;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.w3c.dom.Attr;
|
||||
import org.w3c.dom.Document;
|
||||
import org.w3c.dom.Element;
|
||||
import org.w3c.dom.Node;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import com.thoughtworks.xstream.XStream;
|
||||
import com.thoughtworks.xstream.converters.Converter;
|
||||
import com.thoughtworks.xstream.converters.MarshallingContext;
|
||||
@@ -56,7 +26,6 @@ import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
import com.thoughtworks.xstream.security.NoTypePermission;
|
||||
import com.thoughtworks.xstream.security.NullPermission;
|
||||
import com.thoughtworks.xstream.security.PrimitiveTypePermission;
|
||||
|
||||
import forge.card.CardEdition;
|
||||
import forge.deck.CardPool;
|
||||
import forge.deck.Deck;
|
||||
@@ -66,29 +35,31 @@ import forge.gamemodes.quest.QuestController;
|
||||
import forge.gamemodes.quest.QuestEventDraft;
|
||||
import forge.gamemodes.quest.QuestMode;
|
||||
import forge.gamemodes.quest.bazaar.QuestItemType;
|
||||
import forge.gamemodes.quest.data.DeckConstructionRules;
|
||||
import forge.gamemodes.quest.data.GameFormatQuest;
|
||||
import forge.gamemodes.quest.data.QuestAchievements;
|
||||
import forge.gamemodes.quest.data.QuestAssets;
|
||||
import forge.gamemodes.quest.data.QuestData;
|
||||
import forge.gamemodes.quest.data.QuestEventDraftContainer;
|
||||
import forge.gamemodes.quest.data.QuestItemCondition;
|
||||
import forge.gamemodes.quest.data.*;
|
||||
import forge.gamemodes.quest.data.QuestPreferences.QPref;
|
||||
import forge.gamemodes.quest.data.StarRating;
|
||||
import forge.item.BoosterBox;
|
||||
import forge.item.BoosterPack;
|
||||
import forge.item.FatPack;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.PaperCard;
|
||||
import forge.item.PreconDeck;
|
||||
import forge.item.SealedProduct;
|
||||
import forge.item.TournamentPack;
|
||||
import forge.item.*;
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
import forge.model.FModel;
|
||||
import forge.util.FileUtil;
|
||||
import forge.util.IgnoringXStream;
|
||||
import forge.util.ItemPool;
|
||||
import forge.util.XmlUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.w3c.dom.*;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
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.Paths;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -452,19 +423,20 @@ public class QuestDataIO {
|
||||
}
|
||||
|
||||
private static void savePacked(final String f, final XStream xStream, final QuestData qd) throws IOException {
|
||||
final BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(f));
|
||||
final GZIPOutputStream zout = new GZIPOutputStream(bout);
|
||||
try(
|
||||
final BufferedOutputStream bout = new BufferedOutputStream(Files.newOutputStream(Paths.get(f)));
|
||||
final GZIPOutputStream zout = new GZIPOutputStream(bout)) {
|
||||
xStream.toXML(qd, zout);
|
||||
zout.flush();
|
||||
zout.close();
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unused") // used only for debug purposes
|
||||
private static void saveUnpacked(final String f, final XStream xStream, final QuestData qd) throws IOException {
|
||||
final BufferedOutputStream boutUnp = new BufferedOutputStream(new FileOutputStream(f));
|
||||
try(final BufferedOutputStream boutUnp = new BufferedOutputStream(Files.newOutputStream(Paths.get(f)))) {
|
||||
xStream.toXML(qd, boutUnp);
|
||||
boutUnp.flush();
|
||||
boutUnp.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static class GameFormatQuestToXml implements Converter {
|
||||
|
||||
@@ -1,18 +1,5 @@
|
||||
package forge.gamemodes.tournament;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.Map;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.thoughtworks.xstream.XStream;
|
||||
import com.thoughtworks.xstream.converters.Converter;
|
||||
import com.thoughtworks.xstream.converters.MarshallingContext;
|
||||
@@ -22,12 +9,18 @@ import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
import com.thoughtworks.xstream.security.NoTypePermission;
|
||||
import com.thoughtworks.xstream.security.NullPermission;
|
||||
import com.thoughtworks.xstream.security.PrimitiveTypePermission;
|
||||
|
||||
import forge.deck.CardPool;
|
||||
import forge.item.PaperCard;
|
||||
import forge.localinstance.properties.ForgeConstants;
|
||||
import forge.model.FModel;
|
||||
import forge.util.IgnoringXStream;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Map;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
|
||||
public class TournamentIO {
|
||||
/** Prompt in text field for new (unsaved) built gauntlets. */
|
||||
@@ -130,11 +123,12 @@ public class TournamentIO {
|
||||
}
|
||||
|
||||
private static void savePacked(final XStream xStream0, final TournamentData gd0) throws IOException {
|
||||
final BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream(getTournamentFile(gd0)));
|
||||
try(final BufferedOutputStream bout = new BufferedOutputStream(Files.newOutputStream(getTournamentFile(gd0).toPath()));
|
||||
final GZIPOutputStream zout = new GZIPOutputStream(bout);
|
||||
) {
|
||||
xStream0.toXML(gd0, zout);
|
||||
zout.flush();
|
||||
zout.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static class DeckSectionToXml implements Converter {
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.io.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -107,21 +108,22 @@ public class GuiDownloadZipService extends GuiDownloadService {
|
||||
|
||||
progressBar.setMaximum(100);
|
||||
|
||||
// input stream to read file - with 8k buffer
|
||||
final InputStream input = new BufferedInputStream(conn.getInputStream(), 8192);
|
||||
|
||||
FileUtil.ensureDirectoryExists(destFolder);
|
||||
|
||||
// output stream to write file
|
||||
final String destFile = destFolder + filename;
|
||||
final OutputStream output = new FileOutputStream(destFile);
|
||||
|
||||
// input stream to read file - with 8k buffer
|
||||
// output stream to write file
|
||||
try(InputStream input = new BufferedInputStream(conn.getInputStream(), 8192);
|
||||
OutputStream output = java.nio.file.Files.newOutputStream(Paths.get(destFile))) {
|
||||
|
||||
int count;
|
||||
long total = 0;
|
||||
final byte[] data = new byte[1024];
|
||||
|
||||
while ((count = input.read(data)) != -1) {
|
||||
if (cancel) { break; }
|
||||
if (cancel) {
|
||||
break;
|
||||
}
|
||||
|
||||
total += count;
|
||||
if (progressBar != null)
|
||||
@@ -130,8 +132,7 @@ public class GuiDownloadZipService extends GuiDownloadService {
|
||||
}
|
||||
|
||||
output.flush();
|
||||
output.close();
|
||||
input.close();
|
||||
}
|
||||
|
||||
if (cancel) {
|
||||
new File(destFile).delete();
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package forge.util;
|
||||
|
||||
import java.io.*;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
@@ -11,11 +14,11 @@ import java.util.zip.ZipOutputStream;
|
||||
public class ZipUtil {
|
||||
public static String backupAdvFile = "forge.adv";
|
||||
public static void zip(File source, File dest, String name) throws IOException {
|
||||
try(
|
||||
FileOutputStream fos = new FileOutputStream(dest.getAbsolutePath() + File.separator + name);
|
||||
ZipOutputStream zipOut = new ZipOutputStream(fos);
|
||||
ZipOutputStream zipOut = new ZipOutputStream(fos)) {
|
||||
zipFile(source, source.getName(), zipOut);
|
||||
zipOut.close();
|
||||
fos.close();
|
||||
}
|
||||
}
|
||||
|
||||
private static void zipFile(File fileToZip, String fileName, ZipOutputStream zipOut) throws IOException {
|
||||
@@ -69,12 +72,12 @@ public class ZipUtil {
|
||||
|
||||
// write file content
|
||||
val.append(" * "). append(newFile.getName()).append("\n");
|
||||
FileOutputStream fos = new FileOutputStream(newFile);
|
||||
try(FileOutputStream fos = new FileOutputStream(newFile)) {
|
||||
int len;
|
||||
while ((len = zis.read(buffer)) > 0) {
|
||||
fos.write(buffer, 0, len);
|
||||
}
|
||||
fos.close();
|
||||
}
|
||||
}
|
||||
zipEntry = zis.getNextEntry();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user