Problem ze strumieniami OutputStream etc.

0

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());
	}
}
0

Żartujesz prawda? Przekazujesz do klasy Szyfrowanie nulla jako argument konstruktora. Tegoż nulla przypisujesz do stream_out a potem probujesz na nim wołać metody. Czemu się dziwisz że leci NullPointerException?

0

Dzięki, poprawiłem błąd i teraz działa poprawnie zastępując nulla tym

OutputStream stream_out = new FileOutputStream("wynik.txt");

:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1