java中接口是不能实例化的,然而像下面这种用法是可以的:
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
File file=new File("D:\b.pdf");
if(!file.exists())
{
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
BufferedOutputStream bos =new BufferedOutputStream(new FileOutputStream(file));
BufferedInputStream bfis=new BufferedInputStream(item.getInputStream());
byte b[]=new byte[2048];
int read=bfis.read(b,0,2048);
while(read!=-1)
{
bos.write(b,0,read);
read=bfis.read(b,0,2048);
}
bfis.close();
bos.flush();
bos.close();
主要看这二行:
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> iter = items.iterator();
去List找源码
List是接口没有实现,去找一个实现了List的类(ArrayList就可以)
可以看到实际上是返回了一个Itr:
Itr的定义在下面:
一个实现了Iterator接口的私有类。这样以来就明朗了