[Java] Czas pozostały do końca kopiowania, fragment kodu

Inkognito
Użytkownik
Użytkownik
Posty: 218
Rejestracja: 24 lis 2009, o 10:55
Płeć: Mężczyzna
Lokalizacja: Wilno
Podziękował: 27 razy

[Java] Czas pozostały do końca kopiowania, fragment kodu

Post autor: Inkognito » 20 cze 2011, o 22:54

Czesc,
mam zadanie do programu ktory kopiuje pliki dopisac modul zeby pokazywal ile procent albo minut zostalo do skopiowania pliku.
Moze ktos wie jakim sposobem to znalezc (przyklady kodu), a konkretnie co napisac w google by on mnie zrozumial
Ostatnio zmieniony 21 cze 2011, o 11:12 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości. Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.

pfauel
Użytkownik
Użytkownik
Posty: 32
Rejestracja: 26 lis 2009, o 01:15
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 9 razy

[Java] Czas pozostały do końca kopiowania, fragment kodu

Post autor: pfauel » 21 cze 2011, o 20:02

Niestety podałeś mało informacji jak wygląda Twój kod/zadanie.
Najprościej mogłoby to wyglądać tak:

Kod: Zaznacz cały

public void copy(File source, File target) 
		throws FileNotFoundException, (IOException {
	InputStream in = new FileInputStream(source);
	OutputStream out = new FileOutputStream(target);

	// get size of input file in bytes
	long inputSize = source.length();

	// variable for bytes that were transfered
	long transfered = 0;

	byte[] buf = new byte[1024];
	int len;

	while ((len = in.read(buf)) > 0){

		System.out.println("Copied: " + ((transfered)/ ((double) inputSize) * 100) + "%%");
		transfered += len;

		out.write(buf, 0, len);
	}

	in.close();
	out.close();
}
Myślę, że jak już to masz, to dalsze przekształcenie, żeby otrzymać pozostały czas/procent jest już łatwe - o ile o coś takiego wogóle Tobie chodzi...
Mam nadzieję, że pomogłem.
pozdrawiam

Inkognito
Użytkownik
Użytkownik
Posty: 218
Rejestracja: 24 lis 2009, o 10:55
Płeć: Mężczyzna
Lokalizacja: Wilno
Podziękował: 27 razy

[Java] Czas pozostały do końca kopiowania, fragment kodu

Post autor: Inkognito » 22 cze 2011, o 08:49

Dzieki za pomoc,
tak mam podobny kawalek,
tylko chce uzyc nie System.out, a JProgressBar dla pokazywania ile procent zrobione
tu wynika problem poniewarz poki process jest wykonywany to pokazuje 0 potem odrazu 100
nie wiem w czym problem.

Kod: Zaznacz cały

 while ((len = in.read(dataBytes)) > 0) 
	        { current += len; 
	        zos.write(dataBytes, 0, dataBytes.length);
	        final double progres=(((double)current/(double)length)*100);
	        try{
	        	SwingUtilities.invokeLater(new Runnable(){
	        		public void run(){
	        		progressBar.setValue((int)progres);
	        		}
	        	});
	        	java.lang.Thread.sleep(100);
	        }catch(InterruptedException e){;}

pfauel
Użytkownik
Użytkownik
Posty: 32
Rejestracja: 26 lis 2009, o 01:15
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 9 razy

[Java] Czas pozostały do końca kopiowania, fragment kodu

Post autor: pfauel » 22 cze 2011, o 19:42

Tutaj kod, jak coś takiego może wyglądać. JProgressBar przekazujesz w tej przykładowej metodzie jako parametr.

Kod: Zaznacz cały

public void copy(File source, File target, JProgressBar progress)
			throws FileNotFoundException, IOException, InterruptedException {
		InputStream in = new FileInputStream(source);
		OutputStream out = new FileOutputStream(target);

		// get size of input file in bytes
		long inputSize = source.length();

		// init progress bar
		progress.setMaximum((int) inputSize);
		progress.setValue(0);
		long transfered = 0;

		byte[] buf = new byte[1024];
		int len;

		while ((len = in.read(buf)) > 0) {

			transfered += len;
			progress.setValue((int) transfered);
			
			out.write(buf, 0, len);
		}

		in.close();
		out.close();
	}
Pytałeś też o linki. Tutaj znajdziesz dużo dobrych pomysłów i dalszych odnośników:
http://stackoverflow.com/questions/4474 ... y-progress
pozdrawiam

ODPOWIEDZ