Zadanie🔗
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.
Rozwiązanie🔗
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 do artykułu
Wyłączyliśmy możliwość dodawania komentarzy. Poniżej znajdziesz archiwalne wpisy z czasów gdy strona była jeszcze hobbystycznym blogiem. Zapraszamy natomiast do zadawnia pytań i dyskusji na naszej grupe na facebooku.
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();
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.
Aaaa, dzięki. Tak też myślałem, ze to jakaś oczywista oczywistość, tylko tego nie dostrzegam:)
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..
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.