Zapis tekstu do .zip, Problem

0

Witam,
Na forum jestem nowy, podobnie jak w programowaniu w Javie. Pojawił się mały problem, którego nie mogę za bardzo rozwiązać.
Chciałem napisać program zapisujący do pliku .zip to co użytkownik wpisze w konsole. Kod programu jest następujący

 import java.util.*;
import java.io.*;
import java.util.Scanner;
import java.io.File;

public class OdczytZKlawScann {

	public static void main(String[] args) throws IOException  {
		
	    
	        String s;
		String n ="nazwaPliku";
		
		Scanner odczyt = new Scanner (System.in);
		
	      
	      


		
		System.out.println("Podaj nazwe pliku to jakiego chcesz wprowadzić dane: ");
		n = odczyt.next();
		PrintWriter zapis = new PrintWriter(n+".txt");
	        System.out.println("Plik o nazwie " +n+".txt został poprawnie utworzony. Możesz wpisać dane: //Aby wyjsc wpisz quit");
	        String tekst;
	    
	 




//MOMENT CZYTANIA DANYCH Z KONSOLI I ZAPISU DO PLIKU
		   tekst = odczyt.next();
		   zapis.println(tekst);
	   
	 zapis.close();
	   
		   
			
		    
	
	
	
	 FileReader fr = null;
	 String linia = "";
	fr = new FileReader(n+ ".txt");
	
	 BufferedReader bfr = new BufferedReader(fr);
	while((linia = bfr.readLine()) != null){
        System.out.println(linia.toCharArray());
	}
	}

}

Tutaj moje pytanie:
Jak zrobić aby wszystkie dane wpisane były zapisywane do pliku? Chodzi mi o rodzaj pętli która cały czas zapisuje wpisane dane do pliku, a jak np wczyta ciąg "quit" to wychodzi i zapisuje wszystko w zip? Próbowałem zrobić tak:

 while((tekst = odczyt.next()) != "quit")

		   zapis.println(tekst);

ale to nie działa tak jak trzeba.. Z góry dziękuję za pomoc
Pozdrawiam,

0
while(odczyt.next() != "quit") zapis.println(odczyt.next());
0

Niestety ten sposób nie działa.. Wpisuje dane, wpisuje quit i nic, mogę sobie wpisywać dalej i nic. Jak przerwe działanie programu, to plik jest pusty. W poprzednim poście napisałem, że chodzi o zipowanie. Pomylilem się i wkleiłem kod z normalnego programu zapisującego dane do pliku. I w tym prog i w programie zipujacym mam ten sam problem..

0

Przecież w Javie nie porównuje się stringów za pomocą "==" tylko przez .equals() .

0

Problem częściowo rozwiązany:

    do {
            tekst=odczyt.next();
            zapis.println(tekst);
        } while ( !tekst.equals("quit") ); 

Tylko myśle jak zrobić, żeby ciągu "quit" mi nie zapisywało

0
while ( !(tekst=odczyt.next().equals("quit")) ) {
     zapis.println(tekst);
} 
0
while(odczyt.hasNext()
{
      tekst = odczyt.next();
      if(tekst.equals("quit"))
      {
           break;
      }
      zapis.println(tekst);
}
0

Cały proces można usprawnić. Nie musisz pliku txt zapisywać na dysku twardym. Są metody utworzenia całego zip'a w pamięci - http://www.zetablog.de/documents/java_create_zip_file_in_memory_byte_array.html

Ciebie zainteresuje ta postać przeładowanej metody:

    public void add(String fileName, byte[] data) throws IOException {  
        this.zos.putNextEntry(new ZipEntry(fileName));  
        this.zos.write(data);  
        this.zos.closeEntry();  
    }

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