W poniższym programie pojawia się błąd związany ze strumieniem ObjectinputStream:
"java.io.FileInputStream.<init>(Unknown Source)"
Celem programu jest zapis pliku laska.jpg do pliku plik.dat, a następnie jego wydobycie z plik.dat i wyrysowanie w ramce.
Poniżej 3 klasy, mające realizować to zadanie:
KLASA 1:
import java.io.IOException;
public class Body {
public static void main(String[] args) throws IOException {
Ramka okno = new Ramka();
okno.setVisible(true);
}
}
KLASA 2:
import java.awt.Container;
import java.io.IOException;
import javax.swing.JFrame;
public class Ramka extends JFrame {
public Ramka() throws IOException{
setSize(1000, 600);
Container cont = getContentPane();
cont.add(new Panel());
}
}
KLASA 3:
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
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.io.Serializable;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class Panel extends JPanel implements Serializable {
public Panel() throws IOException{
File plikWe = new File("laska.jpg");
File plikWy = new File("plik.dat");
FileOutputStream fos = new FileOutputStream(plikWe);
ObjectOutputStream oas = new ObjectOutputStream(fos);
oas.writeObject(plikWy); // zapis obiektu do pliku
oas.close();
}
public File wczytajObiekt() throws IOException, ClassNotFoundException{
File plikWy2 = new File("plik.dat");
FileInputStream fis = new FileInputStream(plikWy2);
ObjectInputStream ois = new ObjectInputStream(fis);
File plikG = (File) ois.readObject(); // odczyt obiektu z pliku
ois.close();
return plikG;
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
try {
BufferedImage doNarysowania = ImageIO.read(wczytajObiekt());
g2.drawImage(doNarysowania, 0, 0, 1000, 600, null);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Gdzie popełniam błąd? Może cała koncepcja jest zła?
W załączniku laska.jpg.