pomoc zapis do pliku

0

Witam,

Przerabiam lekcje sobie z ksiazki java podstawy. I nie moge dalej ruszyc z zapisem do pliku. Wczytuje mi dane z pliku ale po wczytaniu ich do okna konsoli nie chce mi zapisac tych danych ale pod inna nazwe pliku. moze ktos pomoc bylbym bardzo wdzieczny, bo nie wiem co zle robie...

 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class IO {

	public static void main(String[] args) throws IOException {
		
		//odczyt
		FileReader odczyt = new FileReader("D:\\P1.txt");		
		BufferedReader r = new BufferedReader(odczyt);
		
		String text = "";
			
		while((text = r.readLine()) != null){
	        System.out.println(text);
		}
		r.close();
		
		//zapis
		
		FileWriter zapis = new FileWriter("D:\\P2.txt");
		BufferedWriter z = new BufferedWriter(zapis);
		
		
		z.write(text);
		z.close();
	}

}


0

o_O a co wg ciebie jest w zmiennej text w chwili gdzie chcesz coś zapisać? Podpowiem ci że wcześniej masz pętlę:

 while((text = r.readLine()) != null){

co oznacza przypisz do zmiennej text linię wczytaną z pliku i wykonuj operacje w pętli dopóki wartość zmiennej text nie jest nullem. Kiedy wiec pętla się przerwie? Ano kiedy text == null...

0

Dobra poszlo tylko na razie zapisuje jedna linijke do pliku i przestal wyswietlac w konsoli tekst

0

Rozważ poniższy kod i poczytaj o http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
 
 
public class IO {
 
    public static void main(String[] args) throws IOException {
 
        //odczyt
        FileReader odczyt = new FileReader("D:\\P1.txt");        
        BufferedReader r = new BufferedReader(odczyt);
 
        String text = "";
 
        /*ArrayList<String> array = new ArrayList<String>();*/
        
        while((text = r.readLine()) != null){
            System.out.println(text);
            /*array.add(text);*/
        }
        r.close();
 
        //zapis
 
        FileWriter zapis = new FileWriter("D:\\P2.txt");
        BufferedWriter z = new BufferedWriter(zapis);
        
        /*for (int i = 0; i < array.size(); i++) {
        	if (i < array.size() - 1) {
        		z.write(array.get(i).toString() + "\n");
        	} else {
        		z.write(array.get(i).toString());
        	}
        }*/
        z.close();
    }
 
}

Okomentowane linijki jak można się domyślić są liniami dodanymi. Tak jak powiedział @Shalom próbujesz zapisywać coś, czego nie ma, poza tym tak czy siak, nawet gdyby było, zapisałoby Ci tylko jedną linijkę, bo w pętli w warunku pętli "while" następuje nadpisywanie wartości zmiennej "text" przy każdej iteracji pętli. Musisz więc w ciele owej pętli magazynować pobierane dane w jakiejś formie. Jednym z rozwiązań jest użycie ArrayList<String> i późniejsze wykorzystanie tak przetrzymanych wartości do zapisu ich do pliku przy użyciu prostej pętli "for".

0
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class IO {

	public static void main(String[] args) throws IOException {
		
		//odczyt
		FileReader odczyt = new FileReader("D:\\Patryk.txt");		
		BufferedReader r = new BufferedReader(odczyt);
		FileWriter zapis = new FileWriter("D:\\Patryk2.txt");
		BufferedWriter z = new BufferedWriter(zapis);
		
		String text = "";
			
		while((text = r.readLine()) != null){
	        System.out.println(text);
	        z.write(text + "\n");
	        
		}
		r.close();
		z.close();
	}

}

Zrobilem troche po swojemu zamiast kopiowac od kogos. Nie dziala jeszcze rozdzielanie wierszy w zapisanym pliku czyli ta czesc :
z.write(text + "\n");

0

Co to znaczy, że nie działa?

0

Dobra wszystko dziala. Dziekuje wszystkim pomagajacym !!!

 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class IO {

	public static void main(String[] args) throws IOException {
		
		//odczyt
		FileReader odczyt = new FileReader("D:\\Patryk.txt");		
		BufferedReader r = new BufferedReader(odczyt);
		FileWriter zapis = new FileWriter("D:\\Patryk2.txt");
		BufferedWriter z = new BufferedWriter(zapis);
		
		String text = "";
			
		while((text = r.readLine()) != null){
	        System.out.println(text);
	        z.write(text);
	        z.newLine();
	        
		}
		r.close();
		z.close();
	}

}

0
Gjorni_Na_Obiedzie napisał(a):

Co to znaczy, że nie działa?

dodanie text + "\n" nie dawalo efektu w finalnym pliku tekstowym. Dopiero newLine() umozliwilo taka operacje.

0

Sluszna uwaga i faktycznie jest ok :) Przynajmniej poznalem inna mozliwosc robienia odstepow dzieki temu. Dziekuje Ci bardzo za wskazowke.

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