Modified readBytes() and writeBytes() methods in DiscUtil.java to use older file handling routines which don't require Java 7. The vastly improved file loading speed which came from Olof's recent update to this file has been retained.

This commit is contained in:
Brettflan 2012-08-26 15:23:45 -05:00
parent b588d355b4
commit 7aa4fa12f2

View File

@ -4,7 +4,6 @@ import java.io.*;
import java.net.URL; import java.net.URL;
import java.nio.channels.Channels; import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel; import java.nio.channels.ReadableByteChannel;
import java.nio.file.Files;
public class DiscUtil public class DiscUtil
{ {
@ -20,12 +19,24 @@ public class DiscUtil
public static byte[] readBytes(File file) throws IOException public static byte[] readBytes(File file) throws IOException
{ {
return Files.readAllBytes(file.toPath()); int length = (int) file.length();
byte[] output = new byte[length];
InputStream in = new FileInputStream(file);
int offset = 0;
// normally it should be able to read the entire file with just a single iteration below, but it depends on the whims of the FileInputStream
while (offset < length)
{
offset += in.read(output, offset, (length - offset));
}
in.close();
return output;
} }
public static void writeBytes(File file, byte[] bytes) throws IOException public static void writeBytes(File file, byte[] bytes) throws IOException
{ {
Files.write(file.toPath(), bytes); FileOutputStream out = new FileOutputStream(file);
out.write(bytes);
out.close();
} }
// -------------------------------------------- // // -------------------------------------------- //
@ -82,8 +93,8 @@ public class DiscUtil
URL url = new URL(urlstring); URL url = new URL(urlstring);
ReadableByteChannel rbc = Channels.newChannel(url.openStream()); ReadableByteChannel rbc = Channels.newChannel(url.openStream());
FileOutputStream fos = new FileOutputStream(file); FileOutputStream fos = new FileOutputStream(file);
fos.getChannel().transferFrom(rbc, 0, 1 << 24); fos.getChannel().transferFrom(rbc, 0, 1 << 24);
return true; return true;
} }
catch (Exception e) catch (Exception e)
{ {