Kurs Java Podstawy - rozszerzony

Rozwiązanie 1.15

Rozwiązanie zadania 1.15 o treści:

Do pliku daneBinarne.txt zapisz swoje imię, aktualny rok i wynik dzielenia 50/4. Następnie z tego samego pliku odczytaj ile znajduje się w nim bajtów.

W tym zadaniu korzystać należy z DataInputStream/DataOutputStream lub RandomAccessFile.

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Zapisywanie {
	public static void main(String[] args) {
		RandomAccessFile strumień = null;
		int ilośćSczytanychBajtów = 0;

		try {
			strumień = new RandomAccessFile("daneBinarne.txt", "rw");
		} catch (FileNotFoundException e) {
			System.out.println("Błąd otwierania strumienia");
		}

		try {
			strumień.writeUTF("Dawid");
			strumień.writeInt(2014);
			strumień.writeDouble(50 / 4);

			strumień = new RandomAccessFile("daneBinarne.txt", "rw");
			while (strumień.read() != -1)
				ilośćSczytanychBajtów++;
		} catch (IOException e) {
			System.out.println("Błąd wejścia-wyjścia");
		}

		try {
			strumień.close();
		} catch (IOException e) {
			System.out.println("Błąd zamykania strumeinia");
		}

		System.out.println("Ilość bajtów wynosi: " + ilośćSczytanychBajtów);
	}

}

Komentarze

snt.banzai

Co może być nie tak z poniższym kodem? Przy wykonywaniu programu zwracana wartość bajtów wynosi: "java.io.DataInputStream@..." i dalej jakieś pierdoły.

try{
zapisRoku.writeUTF(Integer.toString(podanyRok));
zapisRoku.close();
System.out.print("Ilość bajtów jakie zajmuje zapisany w pliku rok wynosi: ");
odczytRoku = new DataInputStream(new FileInputStream("binarne.txt"));
while(odczytRoku.read() != -1){
zczytaneBajty++;
}
System.out.print(odczytRoku);
odczytRoku.close();

Dawid Kunert

Spróbuj wyświetlić zczytaneBajty, a nie odczytRoku :) I daj odczytRoku.close(); w bloku try i po tym bloku catch(IOException e){} i powinno być ok.

snt.banzai

Aaaa, dzięki. Tak też myślałem, ze to jakaś oczywista oczywistość, tylko tego nie dostrzegam:)

Łepcio

W pliku .txt mam wszystko wykrzaczone - Dawid Ţ@(
W czym problem? Pobierałem nawet Notepad++ i formatowałem w nim plik na UTF-8, ale nic to nie dało..

Dawid Kunert

W tym zadaniu ćwiczyliśmy zapis binarny. W twoim pliku dane zostały zapisane binarnie, czyli jak to powiedziałeś są wykrzaczone :) Aby je odczytać musisz napisać odpowiednią metodę w programie :) Nie jesteś w stanie po normalnym otworzeniu pliku odczytać zawartości.