Skip to content

Commit

Permalink
Always use Buffered Streams when dealing with files.
Browse files Browse the repository at this point in the history
  • Loading branch information
alexdupre committed Mar 24, 2020
1 parent 26b42fc commit c26b123
Show file tree
Hide file tree
Showing 15 changed files with 37 additions and 107 deletions.
16 changes: 5 additions & 11 deletions src/main/java/ar/com/hjg/pngj/PngHelperInternal.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;

Expand Down Expand Up @@ -272,9 +268,9 @@ static void debug(Object obj, int offset) {
}

public static InputStream istreamFromFile(File f) {
FileInputStream is;
InputStream is;
try {
is = new FileInputStream(f);
is = new BufferedInputStream(new FileInputStream(f));
} catch (Exception e) {
throw new PngjInputException("Could not open " + f, e);
}
Expand All @@ -286,13 +282,11 @@ static OutputStream ostreamFromFile(File f) {
}

static OutputStream ostreamFromFile(File f, boolean allowoverwrite) {
// In old versions of GAE (Google App Engine) this could trigger
// issues because java.io.FileOutputStream was not whitelisted.
java.io.FileOutputStream os = null;
OutputStream os = null;
if (f.exists() && !allowoverwrite)
throw new PngjOutputException("File already exists: " + f);
try {
os = new java.io.FileOutputStream(f);
os = new BufferedOutputStream(new FileOutputStream(f));
} catch (Exception e) {
throw new PngjInputException("Could not open for write" + f, e);
}
Expand Down
35 changes: 0 additions & 35 deletions src/main/java/ar/com/hjg/pngj/PngHelperInternal2.java

This file was deleted.

15 changes: 5 additions & 10 deletions src/test/java/ar/com/hjg/pngj/awt/ImageIoUtils.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,7 @@
package ar.com.hjg.pngj.awt;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
Expand Down Expand Up @@ -122,9 +117,9 @@ public static void writePng(File f, BufferedImage bi) {
}

public static void writePng(File f, BufferedImage bi, boolean preferBetter) {
FileOutputStream fos = null;
OutputStream fos = null;
try {
fos = new FileOutputStream(f);
fos = new BufferedOutputStream(new FileOutputStream(f));
writePng(fos, bi, preferBetter);
} catch (RuntimeException e) {
throw e;
Expand Down Expand Up @@ -153,9 +148,9 @@ public static BufferedImage readPng(File f) {
}

public static BufferedImage readPng(File f, boolean preferBetter) {
FileInputStream fis = null;
InputStream fis = null;
try {
fis = new FileInputStream(f);
fis = new BufferedInputStream(new FileInputStream(f));
return readPng(fis, preferBetter);
} catch (RuntimeException e) {
throw e;
Expand Down
8 changes: 3 additions & 5 deletions src/test/java/ar/com/hjg/pngj/cli/ApngExtractFrames.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package ar.com.hjg.pngj.cli;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.*;
import java.util.List;

import ar.com.hjg.pngj.ChunkReader;
Expand Down Expand Up @@ -85,7 +83,7 @@ public PngReaderBuffered(File file) {
this.orig = file;
}

FileOutputStream fo = null;
OutputStream fo = null;
File dest;
ImageInfo frameInfo;
int numframe = -1;
Expand Down Expand Up @@ -143,7 +141,7 @@ private void startNewFile() throws Exception {
if (fo != null)
endFile();
dest = createOutputName();
fo = new FileOutputStream(dest);
fo = new BufferedOutputStream(new FileOutputStream(dest));
fo.write(PngHelperInternal.getPngIdSignature());
PngChunkIHDR ihdr = new PngChunkIHDR(frameInfo);
ihdr.createRawChunk().writeChunk(fo);
Expand Down
11 changes: 3 additions & 8 deletions src/test/java/ar/com/hjg/pngj/cli/ExtractIdat.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
package ar.com.hjg.pngj.cli;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.util.ArrayList;
import java.util.List;

Expand Down Expand Up @@ -66,8 +61,8 @@ private void doit() {

private void doitForFile(File file1, File file2) {
try {
FileInputStream fin = new FileInputStream(file1);
OutputStream fout = new FileOutputStream(file2);
InputStream fin = new BufferedInputStream(new FileInputStream(file1));
OutputStream fout = new BufferedOutputStream(new FileOutputStream(file2));
extractIdat(fin, fout, stripFilterByte, !fastMode);
} catch (Exception e) {
throw new PngjException("Fatal error processing " + file1 + " -> " + file2, e);
Expand Down
10 changes: 3 additions & 7 deletions src/test/java/ar/com/hjg/pngj/cli/RecompressIdat.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package ar.com.hjg.pngj.cli;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.util.Arrays;
import java.util.List;
import java.util.zip.Deflater;
Expand Down Expand Up @@ -80,8 +76,8 @@ private void doitForFile(File file1, File file2) {
File dest = file1.equals(file2) ? new File(file2.getAbsolutePath() + ".tmp_pngj") : file2;
long[] sizes;
try {
FileInputStream fin = new FileInputStream(file1);
OutputStream fout = nullOutput ? new NullOs() : new FileOutputStream(dest);
InputStream fin = new BufferedInputStream(new FileInputStream(file1));
OutputStream fout = nullOutput ? new NullOs() : new BufferedOutputStream(new FileOutputStream(dest));
sizes = recompressPng(fin, fout, clevel, strat, !fastMode);
} catch (Exception e) {
throw new PngjException("Fatal error processing " + file1 + " -> " + file2, e);
Expand Down
10 changes: 3 additions & 7 deletions src/test/java/ar/com/hjg/pngj/cli/RemoveChunks.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
package ar.com.hjg.pngj.cli;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.*;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
Expand Down Expand Up @@ -95,8 +91,8 @@ private void doit() throws Exception {
public void doitForFile(File file1, File file2) throws Exception {// warning: file1 can be the
// same as file2 (in place)
File dest = file1.equals(file2) ? new File(file2.getAbsolutePath() + ".tmp_pngj") : file2;
FileInputStream fin = new FileInputStream(file1);
FileOutputStream fout = new FileOutputStream(dest);
InputStream fin = new BufferedInputStream(new FileInputStream(file1));
OutputStream fout = new BufferedOutputStream(new FileOutputStream(dest));
ChunkSeqReaderRemoveChunks c = new ChunkSeqReaderRemoveChunks(fout);
c.quiet = quietMode;
c.chunksIds.addAll(chunks);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ar.com.hjg.pngj.misc;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
Expand Down Expand Up @@ -60,7 +61,7 @@ private long reencode() {
}
imgInfo = reader.imgInfo;

OutputStream os = writeToFile ? new FileOutputStream(tempFile) : new NullOs();
OutputStream os = writeToFile ? new BufferedOutputStream(new FileOutputStream(tempFile)) : new NullOs();
PngWriter writer = writerFactory.createPngWriter(os, reader.imgInfo);
writer.copyChunksFrom(reader.getChunksList());
long t0 = System.currentTimeMillis();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package ar.com.hjg.pngj.misc;

import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
Expand Down Expand Up @@ -414,7 +415,7 @@ public static void showCompressionWithJava(List<File> files, boolean showFilenam
// : null;
dest = File.createTempFile(f.getName(), "");
BufferedImage img = ImageIO.read(f);
OutputStream nos = dest != null ? new FileOutputStream(dest) : new NullOs();
OutputStream nos = dest != null ? new BufferedOutputStream(new FileOutputStream(dest)) : new NullOs();
ImageOutputStream ios = ImageIO.createImageOutputStream(nos);
long t0 = System.currentTimeMillis();
iw.setOutput(ios);
Expand Down
3 changes: 2 additions & 1 deletion src/test/java/ar/com/hjg/pngj/samples/CreateHuge.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ar.com.hjg.pngj.samples;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
Expand All @@ -24,7 +25,7 @@ public class CreateHuge {
*/
public static void createHuge(String filename, final int cols, final int rows) throws Exception {
OutputStream os = filename == null ? TestSupport.createNullOutputStream()
: new FileOutputStream(new File(filename));
:new BufferedOutputStream( new FileOutputStream(new File(filename)));
PngWriter png = new PngWriter(os, new ImageInfo(cols, rows, 8, false));
((PixelsWriterDefault) png.getPixelsWriter()).setFilterType(FilterType.FILTER_AVERAGE);
png.setIdatMaxSize(0x10000);
Expand Down
7 changes: 2 additions & 5 deletions src/test/java/ar/com/hjg/pngj/samples/CreateVeryHuge.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package ar.com.hjg.pngj.samples;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.*;
import java.util.Random;

import ar.com.hjg.pngj.FilterType;
Expand All @@ -22,7 +19,7 @@ public class CreateVeryHuge {
public static void createVeryHuge(String filename, final int cols, final int rows) {
OutputStream os = null;
try {
os = filename == null ? TestSupport.createNullOutputStream() : new FileOutputStream(new File(filename));
os = filename == null ? TestSupport.createNullOutputStream() : new BufferedOutputStream(new FileOutputStream(new File(filename)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package ar.com.hjg.pngj.samples;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;

import ar.com.hjg.pngj.BufferedStreamFeeder;
import ar.com.hjg.pngj.ChunkReader;
Expand Down Expand Up @@ -77,7 +74,7 @@ public void copyInsertingText(OutputStream os, String text, boolean beforeIdat)

public static void insert(String orig, String to, boolean beforeIdat) throws Exception {
NgSampleInsertChunk c = new NgSampleInsertChunk(new FileInputStream(orig));
FileOutputStream oss = new FileOutputStream(to);
OutputStream oss = new BufferedOutputStream(new FileOutputStream(to));
c.copyInsertingText(oss, "Hi!!! after idat", false);
oss.close();
System.out.println("inserted text " + orig + " -> " + to + " " + (beforeIdat ? " before idat" : "after idat"));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ar.com.hjg.pngj.samples;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
Expand Down Expand Up @@ -44,7 +45,7 @@ public static void main(String[] args) throws Exception {
File file = new File(args[0]);
if (file.exists())
throw new Exception("Cowardly refusing to overwrite " + file);
create(new FileOutputStream(file), cols, rows);
create(new BufferedOutputStream(new FileOutputStream(file)), cols, rows);
System.out.println(file + " created");
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import junit.framework.TestCase;

import java.io.FileInputStream;
import java.io.InputStream;

import org.junit.Rule;
Expand Down
12 changes: 3 additions & 9 deletions src/test/java/ar/com/hjg/pngj/test/TestSupport.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
package ar.com.hjg.pngj.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.*;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.ArrayList;
Expand Down Expand Up @@ -247,7 +241,7 @@ public static InputStream istream(File f) {
try {
if (!f.isAbsolute())
f = new File(getResourcesDir(), f.getPath());
return new FileInputStream(f);
return new BufferedInputStream(new FileInputStream(f));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
Expand Down Expand Up @@ -277,7 +271,7 @@ public static OutputStream ostream(File f) {
try {
if (!f.isAbsolute())
f = new File(getResourcesDir(), f.getPath());
return new FileOutputStream(f);
return new BufferedOutputStream(new FileOutputStream(f));
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
Expand Down

0 comments on commit c26b123

Please # to comment.