samos napisał(a)
Dlaczego tak sie dzieje i jak tego uniknąć?
bo writeChars zapisuje, jak widac po nazwie, char'y a taka zmienna w javie ma 2 bajty i dlatego sa puste miejsca
[dopisane]
Mozesz uzyc:
writeBytes(str + "\r\n") i readLine();
ale bedziesz mial krzaki zamiast polskich znakow
Opcja 2:
write((strs + "\r\n").getBytes()) i readLine();
w pliku sa polskie znaki ale zle je odczytuje
Opcja 3:
import java.io.*;
class Test {
public static void main(String args[]) {
String[] strs = {"abc", "śćń", "xyz"};
try {
RandomAccessFile rafOut = new RandomAccessFile("plik.txt", "rw");
for (int i = 0; i < strs.length;) rafOut.write((strs[i++]).getBytes());
rafOut.close();
byte[] buf = new byte[3];
RandomAccessFile rafIn = new RandomAccessFile("plik.txt", "r");
for (int i = 3; i > 0; i--) {
rafIn.read(buf);
System.out.println(new String(buf));
}
rafIn.close();
}
catch (IOException ioE) {
System.out.println("Blad IO");
}
}
}
co dziala dobrze ale jest nieporeczne
Opcja najlepsza:
import java.io.*;
class Test {
public static void main(String args[]) {
String[] strs = {"abc", "śćń", "xyz"};
try {
RandomAccessFile rafOut = new RandomAccessFile("plik.txt", "rw");
for (int i = 0; i < strs.length;) rafOut.writeUTF(strs[i++]);
rafOut.close();
RandomAccessFile rafIn = new RandomAccessFile("plik.txt", "r");
for (int i = 3; i > 0; i--) System.out.println(rafIn.readUTF());
rafIn.close();
}
catch (IOException ioE) {
System.out.println("Blad IO");
}
}
}