Mam oto takie do napisania zadanko z javy:
"Proszę zaimplementować dwa strumienie rozszerzające klasy InputStream i OutputStream.
Strumień wyjściowy, przed wysłaniem danych tekstowych powinien je zakodować szyfrem Cezara, a strumień wejściowy powinien je zdekodować bezpośrednio po odebraniu."
Moje pytanie brzmi, bo już nic mi nie przychodzi do głowy czemu to rzuca "java.lang.NullPointerException", oraz czy później będę mógł użyć
DataOutputStream
do zapisania tego strumienia OutputStream
do pliku?
Jakby ktoś mógłby mnie nakierować na właściwą ścieżkę, to byłbym bardzo wdzięczny :)
Moja klasa szyfrowanie wygląda następująco:
```java
public class Szyfrowanie extends OutputStream {
OutputStream stream_out = null;
Szyfrowanie(OutputStream str_out) { // strumien wyjsciowy
//data_stream_out = new DataOutputStream(new FilterOutputStream(out));
stream_out = str_out; // ???
}
public OutputStream return_out_stream() {
return stream_out;
}
@Override
public void write(int b) throws IOException {
char znak = (char)b;
if ((znak >= 65 ) && ( znak <= 90)) {
znak -= 65;
znak += 3;
znak = (char) (znak % 26);
znak += 65;
stream_out.write(znak);
}
else if ((znak >= 97) && (znak <= 122)) {
znak -= 97;
znak += 3;
znak = (char) (znak % 26);
znak += 97;
stream_out.write(znak); // java.lang.NullPointerException ;/
}
else if ((znak >= 48) && (znak <= 57)) {
znak -= 48;
znak += 3;
znak = (char) (znak % 26);
znak += 48;
stream_out.write(znak);
}
else
stream_out.write(znak);
}
}
A klasa główna tak:
public class Glowna {
public static void main(String [] args) {
FileInputStream file_in = null; // czytanie z pliku
DataOutputStream file_out = null; // pisanie do pliku
OutputStream stream_out = null;
InputStream stream_in = null;
Szyfrowanie szyfr = new Szyfrowanie(stream_out);
// otwieranie pliku do czytania
try {
file_in = new FileInputStream("plik.txt");
} catch (FileNotFoundException e) {
System.out.println("ERROR!!! Nie znaleziono pliku...");
System.exit(1);
}
// odczyt bajtow z pliku
int bajt = 0;
try {
while(bajt != -1) { // -1 gdy koniec pliku
bajt = file_in.read();
System.out.println("Przeczytalem: " + (char)bajt);
szyfr.write(bajt); // wrzucenie do strumienia | java.lang.NullPointerException ;/ |
}
} catch (IOException e) {
System.out.println("ERROR!!! Blad odczytu...");
System.exit(2);
}
// zamykanie pliku
try {
file_in.close();
} catch (IOException e) {
e.printStackTrace();
}
//file_out = new DataOutputStream(szyfr.return_out_stream());
//System.out.println(file_out.size());
}
}