Dopisywanie do pliku z nowa linią Java FileWriter

0

Witam

Chce zrobić cos takiego, ze mam plik np. dane.txt i do niego chce dopisac wyrazy, kazdy w nowej linii.
Robie więc obiekt FileWritera:

 FileWriter file = new FileWriter("dane.txt",true);

No i metodą

file.write("wyraz");
file.close();

wszystko dopisuje.

Problem pojawia sie gdy chce każde slowo miec w nowej linii w notatniku, dopisanie "\n" przy file.write nic nie daje, stworzenie nowego write z \n tez nic nie daje. Szukam i szukam i znaleźć nie moge ;)
Wiem ze jest jeszcze klasa PrintWriter, ale tam z tego co wiem nie ma możliwosci dopisywania do pliku, tylko nadpisywanie.

przepraszam za pewnie - banalne pytanie, ale nie moge sie tego nigdzie doszukac

pozdrawiam

0

Pomoże Ci w tym klasa BufferedWriter.

0

Widze ze ona ma metode newline(); i o to zapewne chodzi ;)
tylko ze z tego co patrze na kostruktory, nie ma tutaj mozliwosci dopisania do pliku

BufferedWriter(Writer out)
Creates a buffered character-output stream that uses a default-sized output buffer.
BufferedWriter(Writer out, int sz)
Creates a new buffered character-output stream that uses an output buffer of the given size.

Mam używać ciągle klasy FileWriter, a w niej zawrzeć klase BufferedWriter?
tzn filewriterem dać mozliwosc dopisania, a faktycznie dopisywac bufferedwriterem?

0

Jak chcesz nowe linie widzieć w upośledzonym notatniku, to

write("d*pa\r\n");

Innym edytorom to nie zaszkodzi.

0

Jak chcesz nowe linie widzieć w upośledzonym notatniku, to

write("d*pa\r\n");

Innym edytorom to nie zaszkodzi.

Pare pytan, co robi "\r" samo w sobie?
Co do innych edytorów: czy FileWriterem i innymi klasami tego typu moge czytać pliki np. worda? rozszerzenia .doc lub .docx? Czy ogranicza mnie to do notatnika?
Jesli nie - czym je mozna przeczytac ;)?

EDIT
doczytałem, ze \r powoduje przejscie do nowej karetki, co wzielo sie od maszyn dopisania. ale jak to wyglada w programie.. to juz zagadka ^^
przechodze do poczatku linii i schodze nizej? a czemu samo zejscie nizej nic nie daje, a z powrotem karetki juz nagle tak ;o

no i jak z tymi plikami worda?;)

0

Różne systemy operacyjne odmiennie kodują przejście do nowego wiersza:
Windows: \r\n == bajty o kodach ASCII 13 i 10
Unix: \n
OS(Mac) \r
Wszystkie edytory (z wyjątkiem windowsowego notatnika) "wiedzą" o tym i poprawnie wyświetlają plik niezależnie od kodowania nowej linii.
(Word nie jest edytorem, jest procesorem tekstu - to jest więcej niż edytor).
W standardowych bibliotekach Javy nie ma obsługi plików Worda. Zajrzyj tu: http://poi.apache.org/

0

Dzieki @bogdans takiej odpowiedzi oczekiwałem ;)

Co do tego notatnika: skoro notatnik tego nie ogarnia, to jeśli mam zainstalowany NotePad++ i ustawie go jako domyślny program do przeglądania plikow .txt i wtedy bede uzywał tylko \n w programie, bedzie to śmigało tak jak należy? czy dalej pozostanie problem z pisaniem tego \r\n?
jesli tak, to czy da rade jakoś sie pozbyc tego cudowania? ;)

0

Jeśli chodzi o edytory, to \r\n jest potrzebne tylko wtedy gdy chcesz oglądać plik w notatniku lub udostępniać plik osobom, które będą go oglądać w notatniku. Sposób kodowania nowej linii nie ma też znaczenia dla przeglądarek.
W programie Notepad++ możesz wybrać sposób kodowania nowego wiersza w nowo tworzonych plikach Ustawienia => Preferencje => Nowy dokument. Możesz zatem łatwo utworzyć plik z dowolnym kodowaniem i sprawdzić jak sobie z nim radzą programy nie będące edytorami. Calc (OpenOffice) radzi sobie doskonale z otwieraniem plików CSV niezależnie od wybranego kodowania, Excela nie mam, nie mogę sprawdzić.

0

user image

Stąd w "format" mozna zmienić na ten z maca(\r) lub linuxa?

A co do kodowania, prawde mówiac - nie wiem czemu zmienia sie kodowania na inne, bez BOM (jakkolwiek to działa) lub z nim. Ale zakładam, że to temat na dluzsza nauke, chyba ze da sie to pojąć w miare szybko to mozecie coś przejaśnic mi ;)

0

Wybór formatu dotyczy nowego dokumentu. Jeśli chcesz zmienić format istniejącego dokumentu, to ustaw właściwy format nowego, stary dokument skopiuj do schowka i wklej do nowego.

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