我已经创建了从客户端到服务器的流。对于这段代码,如何为此类创建ProgressMonitorInputStream
或其他内容?
FileInputStream fileStream = new FileInputStream(file);
int ch;
do
{
ch = fileStream.read();
exitStream.writeUTF(String.valueOf(ch));
}
while(ch != -1);
fileStream.close();
更新的代码 - 窗口出现,但它是空的。只有一个框架。如何解决?
String fileName = "aaa.jpg";
File fileToBeSend = new File(fileName);
InputStream input = new ProgressMonitorInputStream(
null,
"Reading: " + fileName,
new FileInputStream(fileToBeSend));
int ch;
do
{
ch = input.read();
exitStream.writeUTF(String.valueOf(ch));
} while(ch != -1);
input.close();
答案 0 :(得分:1)
要使ProgressMonitorInputStream
正常工作,您需要阅读非常大的文件。在其文件中指明:
这会创建一个进度监视器来监视读取的进度 输入流。 如果需要一段时间,则会弹出ProgressDialog 最多通知用户。如果用户点击取消按钮a 下次读取时将抛出InterruptedIOException。好吧 流关闭时完成清理。
这是一个例子。确保输入的文件(bigFile.txt
)包含许多要阅读的内容。
import java.awt.Color;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import javax.swing.JLabel;
import javax.swing.ProgressMonitorInputStream;
public class ProgressMonitorInputStreamDemo {
public static void main(String args[]) throws Exception {
String file = "bigFile.txt";
FileInputStream fis = new FileInputStream(file);
JLabel filenameLabel = new JLabel(file, JLabel.RIGHT);
filenameLabel.setForeground(Color.black);
Object message[] = { "Reading:", filenameLabel };
ProgressMonitorInputStream pmis = new ProgressMonitorInputStream(null, message, fis);
InputStreamReader isr = new InputStreamReader(pmis);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
br.close();
}
}
注意: 如果您想查看ProgressBar
,无论您阅读的文件多么小,都可以使用SwingWorker
。请查看 this Post 。
答案 1 :(得分:1)
你只是说,如何使用嵌套流,这样的东西?
ProgressMonitorInputStream input = new ProgressMonitorInputStream(
null,
"Reading: " + file,
new FileInputStream(file));
ProgressMonitor monitor = input.getProgressMonitor();
// do some configuration for monitor here
int ch;
do {
ch = input.read();
// note: writing also the last -1 value
exitStream.writeUTF(String.valueOf(ch));
} while(ch != -1);
input.close();