Привет, я загружаю файл на сервер, используя сокет, и мне нужен процент загруженного файла? Как я могу это сделать? У меня есть максимальное значение, то есть длина файла, как я могу получить, сколько файлов было загружено?
FileInputStream fis = new FileInputStream(fil);
BufferedInputStream in = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream(skt.getOutputStream());
//Write the file to the server socket
int i;
while ((i = in.read()) != -1) {
publishProgress(???);
out.write(i);
System.out.println(i);
}
Мне нужно передать длину файла, расширенного в методе publishProgress.
с использованием буферизованного копирования
FileInputStream fis = new FileInputStream(fil);
BufferedInputStream in = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream(skt.getOutputStream());
//Write the file to the server socket
int i;
int written = 0;
byte[] buf = new byte[512];
while ((i = in.read(buff)) != -1) {
out.write(buff,0,i);
written += i;
publishProgress((double)written/length);
//passing a double value from 0-1 to say how much is transmitted (length is length of file)
System.out.println(buff+", "+i);
}
javax.swing.ProgressMonitorInputStream
Ниже приведен ваш модифицированный код. написанное содержит количество int, записанных в сокет.
FileInputStream fis = new FileInputStream(fil);
BufferedInputStream in = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream(skt.getOutputStream());
//Write the file to the server socket
int i;
int written = 0;
while ((i = in.read()) != -1) {
out.write(i);
publishProgress(++written);
System.out.println(i);
}
Для этого вам нужно сделать одну из двух вещей:
swfupload
(см. http://demo.swfupload.org/Documentation/), поскольку они обычно обеспечивают доступ к загрузке этого типа.uploadProgress
.