zapisywanie tekstu w postaci sformatowanej do pliku

0

Na zajęciach mieliśmy omawiane formatowanie poprzez printf, jednak mam też polecenie, aby zapisać dane (macierz) do pliku w postaci sformatowanej.

Da się to co wyrzuca nam scanf zapisać do pliku? Jeśli tak to jak to zrobić.

Mógłbym sam się pomartwić o np. odpowiednią ilość spacji, aby to ładnie wyglądało, jednak myślę, że nie o to chodziło w zadaniu. Nie znalazłem sposobu, by to co nam scanf wyrzuca na ekran móc wpisać np. do Stringa.

1

Najprościej, to zmienić domyślne wyjście (tzn. konsolę) na plik: System.setOut(...);

0

Oto mi chodziło, dzięki.

Człowiek biedny jak funkcji nie zna. Jeszcze jak zna nazwę metody to w dokumentacji resztę znajdzie. Gorzej jak wiesz co chcesz zrobić ale nie wiesz czego użyć.

0

Klasa java.lang.String posiada statyczną metodę format(String, Object[]), która robi dokładnie to samo, tylko zamiast wypisywania na konsolę, zwraca sformatowaną wartość. Tą wartość możesz już standardowo zapisać do pliku.

0

Dzięki, a tak zostając przy setOut
Wiem jak ustawić to na plik. A w jaki sposób ustawić wyjście na Stringa?

Próbuję w ten sposób:

String line=null;
        System.setOut(new PrintStream(line));

Kod się kompiluje, lecz w trakcie uruchomienia wywala błąd :

java.lang.NullPointerException
at java.io.FileOutputStream.<init>(FileOutputStream.java:172)
at java.io.FileOutputStream.<init>(FileOutputStream.java:70)
at java.io.PrintStream.<init>(PrintStream.java:156)
at zd3.saveToFile(zd3.java:21)

Oczywiście wyjątki obsłużone, więc to nie to.

0

Chyba jakoś tak:

ByteArrayOutputStream os=new ByteArrayOutptuStream();
System.setOut(new PrintStream(os));
...
String line=os.toString();
//lub
String line=os.toString(kodowanie); 
0

Tu aż się prosi napisać to tak, jak proponował Viking. Nie da się ustawić wyjścia bezpośrednio na Stringa, bo ten jest niemutowalny.

0

Zgadzam się, przekierowanie (zmiana System.out) ma sens gdy zamieniamy konsolę na plik.

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