Error opening file.
I am getting the following stack trace:
java.io.IOException: Read error
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:177)
at net.bcr666.hexwriter.Loader.run(Loader.java:35)
This is the code from the class
import java.util.*;
import javax.swing.event.*;
import java.io.IOException;
import javax.swing.JOptionPane;
import java.io.InputStream;
import javax.swing.SwingUtilities;
public class Loader extends Thread {
transient Vector changeListeners = null;
InputStream inputStream = null;
HexWriter parent = null;
Vector data = new Vector();
public Loader(InputStream inputStream, HexWriter parent) {
this.inputStream = inputStream;
this.parent = parent;
}
public byte[] getData() {
if (data.size() == 0) {
return null;
}
return (byte[])data.get(0);
}
public void run() {
byte[] input = new byte[16];
int status = 0;
do {
try {
status = inputStream.read(input);
} catch (IOException ex) {
JOptionPane.showMessageDialog(parent, "Error reading
file.");
ex.printStackTrace();
fireStateChanged(new ChangeEvent(this));
return;
} finally {
try { inputStream.close(); } catch (IOException ex) {}
}
if (status > 0) {
data.add(input);
fireStateChanged(new ChangeEvent(this));
}
} while (status > -1);
try {
fireStateChanged(new ChangeEvent(this));
inputStream.close();
} catch (Exception ex) {}
}
public synchronized void addChangeListener(ChangeListener listener)
{
if (changeListeners == null) {
changeListeners = new Vector();
}
if (!changeListeners.contains(listener)) {
changeListeners.add(listener);
}
}
public synchronized void removeChangeListener(ChangeListener
listener) {
if (changeListeners == null) {
return;
}
if (changeListeners.contains(listener)) {
changeListeners.remove(listener);
}
if (changeListeners.size() == 0) {
changeListeners = null;
}
}
protected void fireStateChanged(final ChangeEvent e) {
if (changeListeners != null) {
final Vector listeners = changeListeners;
int count = listeners.size();
for (int i = 0; i < count; i++) {
final int j = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
( (ChangeListener)
listeners.elementAt(j)).stateChanged(e);
}
});
}
}
}
}
The InputStream is passed in from another class and is guaranteed to
be open. I get the same error no matter what file I try to open. Am
I doing something wrong?