Strona 1 z 1

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

: 20 cze 2011, o 22:54
autor: Inkognito
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

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

: 21 cze 2011, o 20:02
autor: pfauel
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

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

: 22 cze 2011, o 08:49
autor: Inkognito
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){;}

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

: 22 cze 2011, o 19:42
autor: pfauel
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:

pozdrawiam