用java获取磁盘信息时出错指定目录下指定扩展名的文件出错

Java Web上传组件使用:JSPUpload - 我的IT技术杂谈 - ITeye技术网站
博客分类:
关于JSPUpload的介绍可以去google一下,jar和使用实例可以在下面附件中下载,在这里我使JSPUpload实现一个JavaWeb文件上传的功能。
JSP页面内容如下:
&form method="POST" action="JspsmartUploadServlet" ENCTYPE="multipart/form-data"&
&tr&&td&&input type="text" name="subject" /&&/td&&/tr&
&tr&&td&&input type="file" name="file1"/&&/td&&/tr&
&tr&&td&&input type="file" name="file2"/&&/td&&/tr&
&tr&&td&&input type="file" name="file3"/&&/td&&/tr&
&tr&&td&&input type="submit" value="上传"/&&/td&&/tr&
对应的Servlet内容如下:
* JspSmartUpload上传组件的使用
* @author mingxue.
public class JspsmartUploadServlet extends HttpServlet {
private static final long serialVersionUID = 5241539L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
SmartUpload smartUpload = new SmartUpload();
// SmartUpload 的初始化
smartUpload.initialize(this.getServletConfig(), request, response);
// 设定每个文件允许上传的最大长度
smartUpload.setMaxFileSize(10 * 1024);
// 设定允许上传的文件的总长度,用于限制一次性上传的数据量大小
smartUpload.setTotalMaxFileSize(3 * 10 * 1024);
// 用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限制,则上传时组件将抛出异常。
smartUpload.setAllowedFilesList("doc,txt,xls,pdf");
// 设定禁止上传的文件(通过扩展名限制)
smartUpload.setDeniedFilesList("exe,bat,jsp");
} catch (SQLException e1) {
e1.printStackTrace();
// 上传文件数据。对于上传操作,第一步执行initialize方法,第二步就要执行这个方法
smartUpload.upload();
} catch (SmartUploadException e2) {
e2.printStackTrace();
// 上传的总目录
String dirPath = request.getSession().getServletContext().getRealPath(
"/FileDir");
java.io.File f = new java.io.File(dirPath);
if (!f.exists()) {
f.mkdirs();
// 将所有文件保存到同一目录
saveAll(smartUpload, dirPath);
// 将不同地区的文件存放到不同的目录中
saveSingle(smartUpload, dirPath);
// 获取表单中的其它内容
com.jspsmart.upload.Request rq = smartUpload.getRequest();
// 获取指定参数之值。当参数不存在时,返回值为null
String parameterValue = rq.getParameter("subject");
System.out.println(parameterValue);
// 取得Request对象中所有参数的名字,用于遍历所有参数。它返回的是一个枚举型的对象
Enumeration parameterName = rq.getParameterNames();
while (parameterName.hasMoreElements()) {
System.out.println(parameterName.nextElement());
// 当一个参数可以有多个值时,用此方法来取其值。它返回的是一个字符串数组。当参数不存在时,返回值为null
rq.getParameterValues("subject");
* 将所有文件保存到同一目录
* @param smartUpload
* @param dirPath
* @throws ServletException
* @throws IOException
private void saveAll(SmartUpload smartUpload, String dirPath)
throws ServletException, IOException {
// 将全部上传文件保存到指定目录下,并返回保存的文件个数
smartUpload.save(dirPath);
} catch (SmartUploadException e) {
e.printStackTrace();
* 将不同地区的文件存放到不同的目录中
* @param smartUpload
* @throws ServletException
* @throws IOException
private void saveSingle(SmartUpload smartUpload, String dirPath)
throws ServletException, IOException {
com.jspsmart.upload.Files files = smartUpload.getFiles();
File regionDirSmall = new File(dirPath, "dirSmall");
if (!regionDirSmall.exists()) {
regionDirSmall.mkdirs();
File regionDirBig = new File(dirPath, "dirBig");
if (!regionDirBig.exists()) {
regionDirBig.mkdirs();
// 取得上传文件的数目,并遍历所有文件
for (int i = 0; i & files.getCount(); i++) {
com.jspsmart.upload.File f = files.getFile(i);
if (f.isMissing()) {
// 简单分类
if (f.getSize() & 1024) {
f.saveAs(regionDirSmall.getPath() + "\\" + f.getFileName(),
f.SAVEAS_PHYSICAL);
f.saveAs(regionDirBig.getPath() + "\\" + f.getFileName(),
f.SAVEAS_PHYSICAL);
} catch (SmartUploadException e) {
e.printStackTrace();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
相于JSPUpload文件下载如下:
JSP页面 (可以传参进入到Servlet当中再获取相应的文件,在这里我就省略了)
&a href="JspsmartDownload"&下载&/a&
Servlet内容如下:
* 使用Jspsmart组件下载
* @author mingxue.
public class JspsmartDownload extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
SmartUpload smartUpload = new SmartUpload();
smartUpload.initialize(this.getServletConfig(), request, response);
smartUpload.setContentDisposition(null);
File downloadFile = new File(this.getServletContext().getRealPath("/")
+ "\\FileDir\\dirSmall" + "\\Oracle使用.txt");
System.out.println(downloadFile.getAbsolutePath());
smartUpload.downloadFile(downloadFile.getAbsolutePath());
} catch (SmartUploadException e) {
e.printStackTrace();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
关于JSPUpload的一些其它的绍介要感谢chengzhisheng()以下内容转自于:
二、相关类说明篇
  这个类包装了一个上传文件的所有信息。通过它,可以得到上传文件的文件名、文件大小、扩展名、文件数据等信息。
  File类主要提供以下方法:
1、saveAs作用:将文件换名另存。
public void saveAs(java.lang.String destFilePathName)
public void saveAs(java.lang.String destFilePathName, int optionSaveAs)
其中,destFilePathName是另存的文件名,optionSaveAs是另存的选项,该选项有三个值,分别是SAVEAS_PHYSICAL,SAVEAS_VIRTUAL,SAVEAS_AUTO。SAVEAS_PHYSICAL表明以操作系统的根目录为文件根目录另存文件,SAVEAS_VIRTUAL表明以Web应用程序的根目录为文件根目录另存文件,SAVEAS_AUTO则表示让组件决定,当Web应用程序的根目录存在另存文件的目录时,它会选择SAVEAS_VIRTUAL,否则会选择SAVEAS_PHYSICAL。
例如,saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)执行后若Web服务器安装在C盘,则另存的文件名实际是c:\upload\sample.zip。而saveAs("/upload/sample.zip",SAVEAS_VIRTUAL)执行后若Web应用程序的根目录是webapps/jspsmartupload,则另存的文件名实际是webapps/jspsmartupload/upload/sample.zip。saveAs("/upload/sample.zip",SAVEAS_AUTO)执行时若Web应用程序根目录下存在upload目录,则其效果同saveAs("/upload/sample.zip",SAVEAS_VIRTUAL),否则同saveAs("/upload/sample.zip",SAVEAS_PHYSICAL)。
建议:对于Web程序的开发来说,最好使用SAVEAS_VIRTUAL,以便移植。
2、isMissing
作用:这个方法用于判断用户是否选择了文件,也即对应的表单项是否有值。选择了文件时,它返回false。未选文件时,它返回true。
原型:public boolean isMissing()
3、getFieldName
作用:取HTML表单中对应于此上传文件的表单项的名字。
原型:public String getFieldName()
4、getFileName
作用:取文件名(不含目录信息)
原型:public String getFileName()
5、getFilePathName
作用:取文件全名(带目录)
原型:public String getFilePathName
6、getFileExt
作用:取文件扩展名(后缀)
原型:public String getFileExt()
7、getSize
作用:取文件长度(以字节计)
原型:public int getSize()
8、getBinaryData
作用:取文件数据中指定位移处的一个字节,用于检测文件等处理。
原型:public byte getBinaryData(int index)。其中,index表示位移,其值在0到getSize()-1之间。
㈡ Files类
  这个类表示所有上传文件的集合,通过它可以得到上传文件的数目、大小等信息。有以下方法:
1、getCount
作用:取得上传文件的数目。
原型:public int getCount()
2、getFile
作用:取得指定位移处的文件对象File(这是com.jspsmart.upload.File,不是java.io.File,注意区分)。
原型:public File getFile(int index)。其中,index为指定位移,其值在0到getCount()-1之间。
3、getSize
作用:取得上传文件的总长度,可用于限制一次性上传的数据量大小。
原型:public long getSize()
4、getCollection
作用:将所有上传文件对象以Collection的形式返回,以便其它应用程序引用,浏览上传文件信息。
原型:public Collection getCollection()
5、getEnumeration
作用:将所有上传文件对象以Enumeration(枚举)的形式返回,以便其它应用程序浏览上传文件信息。
原型:public Enumeration getEnumeration()
㈢ Request类
  这个类的功能等同于JSP内置的对象request。只所以提供这个类,是因为对于文件上传表单,通过request对象无法获得表单项的值,必须通过jspSmartUpload组件提供的Request对象来获取。该类提供如下方法:
1、getParameter
作用:获取指定参数之值。当参数不存在时,返回值为null。
原型:public String getParameter(String name)。其中,name为参数的名字。
2、getParameterValues
作用:当一个参数可以有多个值时,用此方法来取其值。它返回的是一个字符串数组。当参数不存在时,返回值为null。
原型:public String[] getParameterValues(String name)。其中,name为参数的名字。
3、getParameterNames
作用:取得Request对象中所有参数的名字,用于遍历所有参数。它返回的是一个枚举型的对象。
原型:public Enumeration getParameterNames()
㈣ SmartUpload类这个类完成上传下载工作。
A.上传与下载共用的方法:
只有一个:initialize。
作用:执行上传下载的初始化工作,必须第一个执行。
原型:有多个,主要使用下面这个:
public final void initialize(javax.servlet.jsp.PageContext pageContext)
其中,pageContext为JSP页面内置对象(页面上下文)。
B.上传文件使用的方法:
作用:上传文件数据。对于上传操作,第一步执行initialize方法,第二步就要执行这个方法。
原型:public void upload()
作用:将全部上传文件保存到指定目录下,并返回保存的文件个数。
原型:public int save(String destPathName)
和public int save(String destPathName,int option)
其中,destPathName为文件保存目录,option为保存选项,它有三个值,分别是SAVE_PHYSICAL,SAVE_VIRTUAL和SAVE_AUTO。(同File类的saveAs方法的选项之值类似)SAVE_PHYSICAL指示组件将文件保存到以操作系统根目录为文件根目录的目录下,SAVE_VIRTUAL指示组件将文件保存到以Web应用程序根目录为文件根目录的目录下,而SAVE_AUTO则表示由组件自动选择。
注:save(destPathName)作用等同于save(destPathName,SAVE_AUTO)。
3、getSize
作用:取上传文件数据的总长度
原型:public int getSize()
4、getFiles
作用:取全部上传文件,以Files对象形式返回,可以利用Files类的操作方法来获得上传文件的数目等信息。
原型:public Files getFiles()
5、getRequest
作用:取得Request对象,以便由此对象获得上传表单参数之值。
原型:public Request getRequest()
6、setAllowedFilesList
作用:设定允许上传带有指定扩展名的文件,当上传过程中有文件名不允许时,组件将抛出异常。
原型:public void setAllowedFilesList(String allowedFilesList)
其中,allowedFilesList为允许上传的文件扩展名列表,各个扩展名之间以逗号分隔。如果想允许上传那些没有扩展名的文件,可以用两个逗号表示。例如:setAllowedFilesList("doc,txt,,")将允许上传带doc和txt扩展名的文件以及没有扩展名的文件。
7、setDeniedFilesList
作用:用于限制上传那些带有指定扩展名的文件。若有文件扩展名被限制,则上传时组件将抛出异常。
原型:public void setDeniedFilesList(String deniedFilesList)
其中,deniedFilesList为禁止上传的文件扩展名列表,各个扩展名之间以逗号分隔。如果想禁止上传那些没有扩展名的文件,可以用两个逗号来表示。例如:setDeniedFilesList("exe,bat,,")将禁止上传带exe和bat扩展名的文件以及没有扩展名的文件。
8、setMaxFileSize
作用:设定每个文件允许上传的最大长度。
原型:public void setMaxFileSize(long maxFileSize)
其中,maxFileSize为为每个文件允许上传的最大长度,当文件超出此长度时,将不被上传。
9、setTotalMaxFileSize
作用:设定允许上传的文件的总长度,用于限制一次性上传的数据量大小。
原型:public void setTotalMaxFileSize(long totalMaxFileSize)
其中,totalMaxFileSize为允许上传的文件的总长度。
C.下载文件常用的方法
1、setContentDisposition
作用:将数据追加到MIME文件头的CONTENT-DISPOSITION域。jspSmartUpload组件会在返回下载的信息时自动填写MIME文件头的CONTENT-DISPOSITION域,如果用户需要添加额外信息,请用此方法。
原型:public void setContentDisposition(String contentDisposition)
其中,contentDisposition为要添加的数据。如果contentDisposition为null,则组件将自动添加"",以表明将下载的文件作为附件,结果是IE浏览器将会提示另存文件,而不是自动打开这个文件(IE浏览器一般根据下载的文件扩展名决定执行什么操作,扩展名为doc的将用word程序打开,扩展名为pdf的将用acrobat程序打开,等等)。
2、downloadFile
作用:下载文件。
原型:共有以下三个原型可用,第一个最常用,后两个用于特殊情况下的文件下载(如更改内容类型,更改另存的文件名)。
① public void downloadFile(String sourceFilePathName)
其中,sourceFilePathName为要下载的文件名(带目录的文件全名)
② public void downloadFile(String sourceFilePathName,String contentType)
其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别)。
③ public void downloadFile(String sourceFilePathName,String contentType,String destFileName)
其中,sourceFilePathName为要下载的文件名(带目录的文件全名),contentType为内容类型(MIME格式的文件类型信息,可被浏览器识别),destFileName为下载后默认的另存文件名。
描述: 我的实例代码
下载次数: 272
下载次数: 214
下载次数: 173
xiaobojava
浏览: 396492 次
来自: 上海
解决了我的问题
你的文章是转载的,为什么不写明转载的地址或链接呢?JAVAEY ...
没有这个类的特色用法啊如何用c++实现删除某文件夹(包含子文件夹)中某一指定扩展名的所有文件
[问题点数:40分,结帖人lxitong]
如何用c++实现删除某文件夹(包含子文件夹)中某一指定扩展名的所有文件
[问题点数:40分,结帖人lxitong]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2012年 总版技术专家分年内排行榜第七
2014年11月 总版技术专家分月排行榜第二2014年10月 总版技术专家分月排行榜第二2014年6月 总版技术专家分月排行榜第二2014年5月 总版技术专家分月排行榜第二2014年3月 总版技术专家分月排行榜第二2013年5月 总版技术专家分月排行榜第二
2012年 总版技术专家分年内排行榜第七
2014年11月 总版技术专家分月排行榜第二2014年10月 总版技术专家分月排行榜第二2014年6月 总版技术专家分月排行榜第二2014年5月 总版技术专家分月排行榜第二2014年3月 总版技术专家分月排行榜第二2013年5月 总版技术专家分月排行榜第二
2013年7月 C/C++大版内专家分月排行榜第一
2013年6月 C/C++大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。您可能的代码
相关专栏文章
相关聚客文章在linux下递归获取指定目录下指定扩展名的文件名列表
只用到了两个与目录相关的结果体:
#include &dirent.h&
struct __dirstream{
&void *__ /* `struct hurd_fd' pointer for descriptor.&& */&char *__ /* Directory block.&& */&int __entry_ /* Entry number `__data' corresponds to.&& */&char *__ /* Current pointer into the block.&& */&int __entry_ /* Entry number `__ptr' corresponds to.&& */&size_t __ /* Space allocated for the block.&& */&size_t __ /* Total valid data in the block.&& */&__libc_lock_define (, __lock) /* Mutex lock for this structure.&& */
typedef struct __dirstream DIR;
struct dirent{&&& long d_&&&&&&&&&&&&&&&& /* inode number 索引节点号 */&&& off_t d_&&&&&&&&&&&&&&& /* offset to this dirent 在目录文件中的偏移 */&&& unsigned short d_&&& /* length of this d_name 文件名长 */&&& unsigned char d_&&&&&&& /* the type of d_name 文件类型 */&&& &&& char d_name [NAME_MAX+1];&& /* file name (null-terminated) 文件名,最长255字符 */}
其中inode表示存放的是该文件的结点数目(具体可了解linux下的文件系统),d_off 是文件在目录中的编移,这两个基本很少用。
d_type表示档案类型:
&&& DT_UNKNOWN = 0,
# define DT_UNKNOWN DT_UNKNOWN
&&& DT_FIFO = 1,
# define DT_FIFO DT_FIFO
&&& DT_CHR = 2,
# define DT_CHR DT_CHR
&&& DT_DIR = 4,
# define DT_DIR DT_DIR
&&& DT_BLK = 6,
# define DT_BLK DT_BLK
&&& DT_REG = 8,
# define DT_REG DT_REG
&&& DT_LNK = 10,
# define DT_LNK DT_LNK
&&& DT_SOCK = 12,
# define DT_SOCK DT_SOCK
&&& DT_WHT = 14
# define DT_WHT DT_WHT
上实例程序:
#include &stdio.h&
#include &stdlib.h&
#include &dirent.h&
#include &string&
#include &vector&
#include &algorithm&
/*文件信息:文件目录、文件名*/
struct FileInfo
char dir[512];
char filename[512];
到指定目录,递归子目录的获取指定扩展名的文件,将文件信息(文件路径,名称),存储在一个表中,供后续工作使用
存储获取到文件名的路径
@sExtend: 文件扩展名
@*pFileList: 存储获取到文件名的vector对象的地址
@maxcount:获取文件信息数目的最大值
&= 0: 获取文件信息的数目
-1:传入的目录或扩展名参数错误
-2:目录访问失败, 可能是传入的目录非法
int get_filename_list(string sPath, string sExtend, vector&FileInfo& *pFileList, int maxcount)
if(sPath.size()& 1 || sExtend.size() &1)
return -1;
struct dirent* pdir_
string str_
string last_
if(sExtend[0] != '.')
sExtend = '.' + sE
if(sPath[sPath.size()-1] != '/') //目录都以"/"结尾
sPath += '/';
int getcount = 0;//获取到文件的个数
FileInfo myFileI
pFileList-&clear();
vector&string& vDirL
string sCurD
vDirList.push_back(sPath);
string sSubD
while( !vDirList.empty() )
pdir_ent = NULL;
pdir = NULL;
sCurDir = vDirList.back();
vDirList.pop_back();
if((pdir = opendir(sCurDir.c_str())) == NULL)
printf("打开文件夹【%s】失败!", sCurDir.c_str());
return -2;
//printf("/n/n/n*********************** current is handling the [%s] directory *************************/n", sCurDir.c_str());
while((pdir_ent = readdir(pdir)) != NULL)
str_tmp.clear();
str_tmp = pdir_ent-&d_
//printf("/n/t{---------- %s -----------------}/n",pdir_ent-&d_name);
if(strcmp(pdir_ent-&d_name, ".") == 0 || strcmp(pdir_ent-&d_name, "..")==0 )
//printf("/t[%s --& omit it]/n", pdir_ent-&d_name);
if(pdir_ent-&d_type == DT_DIR)
sSubDir = sCurDir +
pdir_ent-&d_name + "/";
vDirList.push_back( sSubDir );
//printf("/t#%s
as directory push_backed to vector#/n",pdir_ent-&d_name);
if( (dot_pos = str_tmp.find_last_of(".")) == string::npos )
//printf("/t&111 %s
not satisfy the extend&/n",pdir_ent-&d_name);
if(str_tmp.substr(dot_pos,str_tmp.length() - dot_pos).compare(sExtend) !=0 )
//printf("/t&222 %s
not satisfy the extend&/n",pdir_ent-&d_name);
memset(&myFileInfo, 0, sizeof(struct FileInfo));
memcpy(myFileInfo.dir, sCurDir.c_str(), strlen(sCurDir.c_str()));
memcpy(myFileInfo.filename, str_tmp.c_str(), str_tmp.size());
pFileList-&push_back(myFileInfo);
//printf("/t!%s
---& OK!/n",pdir_ent-&d_name);
getcount++;
if(getcount &= maxcount)
closedir(pdir);
if(getcount &= maxcount)
return(pFileList-&size());
int cmpfunc(FileInfo a, FileInfo b)
string a_filepath = a.
a_filepath += a.
string b_filepath = b.
b_filepath += b.
return a_filepath & b_
int main(int argc, char** argv)
if(argc & 3 || strlen(argv[1]) & 1 || strlen(argv[2]) & 1)
printf("call error!/n Usages: dirOP path file_extend/n");
vector&FileInfo& myFilesL
int file_list_max_count = 100;
int rtn = get_filename_list(argv[1], argv[2], &myFilesList, file_list_max_count);
if( rtn & 0)
printf("calling get_filename_list() occur error!/n");
vector&FileInfo&::
for(iter=myFilesList.begin(); iter!=myFilesList.end(); ++iter)
printf("/n%s/t/t%s", iter-&dir, iter-&filename);
sort(myFilesList.begin(), myFilesList.end(), cmpfunc);
printf("/n/n/n/n after sorted data is:/n");
for(iter=myFilesList.begin(); iter!=myFilesList.end(); ++iter)
printf("/n%s/t/t%s", iter-&dir, iter-&filename);
printf("/n");
文章评论 以下网友留言只代表其个人观点,不代表本网站的观点和立场。编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad -
- ITeye技术网站
博客分类:
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。
大家正在做上面这道题,网上迟到的朋友也请做做这道题,找工作必须能编写这些简单问题的代码!)
答:方法接受一个对象,这个对象就是过虑的策略对象,不同的人提供不同的实现,即提供了不同的过滤策略。
public static void main(String[] args) throws Exception {
File srcDir = new File("java");
if(!(srcDir.exists() && srcDir.isDirectory()))
throw new Exception("目录不存在
File[] files = srcDir.listFiles(
new FilenameFilter(){
public boolean accept(File dir, String name) {
return name.endsWith(".java");
System.out.println(files.length);
File destDir = new File("jad");
if(!destDir.exists()) destDir.mkdir();
for(File f :files){
FileInputStream
fis = new FileInputStream(f);
String destFileName = f.getName().replaceAll("\\.java$", ".jad");
FileOutputStream fos = new FileOutputStream(new File(destDir,destFileName));
copy(fis,fos);
fis.close();
fos.close();
private static void copy(InputStream ips,OutputStream ops) throws Exception{
int len = 0;
byte[] buf = new byte[1024];
while((len = ips.read(buf)) != -1){
ops.write(buf,0,len);
由本题总结的思想及策略模式的解析:
1. 得到某个目录下的所有的文件集合
1.1 得到目录
1.2 得到目录下的所有文件:
1.3 只想得到的文件:
public boolean accept(File pathname){
return pathname.getName().endsWith(".java")
2.将每个文件复制到另外一个目录,并改扩展名
2.1 得到目标目录,如果目标目录不存在,则创建之
2.2 根据源文件名得到目标文件名,注意要用正则表达式,注意的转义。
2.3 根据表示目录的和目标文件名的字符串,得到表示目标文件的。
//要在硬盘中准确地创建出一个文件,需要知道文件名和文件的目录。
2.4 将源文件的流拷贝成目标文件流,拷贝方法独立成为一个方法,方法的参数采用抽象流的形式。
//方法接受的参数类型尽量面向父类,越抽象越好,这样适应面更宽广。
分析方法内部的策略模式实现原理
File[] files = listFiles();
//Arraylist acceptedFilesList = new ArrayList();
File[] acceptedFiles = new File[files.length];
int pos = 0;
for(File file: files){
boolean accepted = filter.accept(file);
if(accepted){
//acceptedFilesList.add(file);
acceptedFiles[pos++] =
Arrays.copyOf(acceptedFiles,pos);
//return (File[])accpetedFilesList.toArray();
AutomaticThoughts
浏览: 51654 次
可以看看这篇文章,构建一个简单的线程池:http://www. ...
明白了。。终于明白了
非常好,通俗易通 可见楼主水平深入浅出!
写的很好,特别是队列那快,通熟易懂
前面的还稍微能看懂点,到后面完全看不懂了。

我要回帖

更多关于 java file 扩展名 的文章

 

随机推荐