如何检查是否存在其他文件

时间:2016-02-29 11:20:12

标签: java file

我从名称为file 1.pdffile 2.pdf等的文件夹中加载了一些文件 我想将它们全部加载到我的程序中。如果我新增了它们的总数,我会这样做:

for(int i=1; i<=100; i++){
   File pdfFile = new File("file "+i+".pdf");
   //...
}

但我不知道总数。如果没有其他文件,那么条件是什么,然后退出?

do{
      File pdfFile = new File("file "+i+".pdf");
      //...
}while(//there are files...)

4 个答案:

答案 0 :(得分:7)

有两种方法 - 你可以简单地继续增加你的计数器,直到你得到一个不存在的文件,即

int i = 1;
File file;
while((file = new File("file "+i+".pdf")).exists()) {
    // do whatever
    ++i;
}

不那么笨拙的方法是简单地遍历特定目录中的所有文件,只是忽略名称与您的模式不匹配的文件(即,除非您处理文件的顺序很重要)

答案 1 :(得分:1)

你可以捕获异常并打破while循环。最初我回答说:

boolean success = true;
int i = 0;

while(success){

    i = i + 1;

    try{
        File pdfFile = new File("file " + i + ".pdf");
    } catch(FileNotFoundException ex){
        success = false;
    }
}

但是我被告知构造函数不会抛出异常,因此这不起作用。因此,您最好使用下面的答案,正如另一位用户(@cubic)建议的那样。

int i = 0;
File file;

while((file = new File("file " + i + ".pdf")).exists()){
    // something with file
    i++;
}

答案 2 :(得分:1)

如果您可以访问依赖Apache Commons IO,那么您的代码将如下所示:

    // Bind repeater

   DataTable dt = objReport.GetCustomRecord();
    fn = new List<string>();
    for (int i = 0; i < dt.Columns.Count; i++)
    {
        if (dt.Columns[i].ColumnName != "Maxcount" )
        {
            fn.Add(dt.Columns[i].ColumnName);
        }
    }

    Repeater1.DataSource = dt;
    Repeater1.DataBind();



       protected void Repeater1_databinding(object sender,   RepeaterItemEventArgs e)
    {
   if (e.Item.ItemType == ListItemType.Header)
   {
    if (e.Item.FindControl("literalHeader") != null)
    {
        StringBuilder sb = new StringBuilder();
        Literal li = e.Item.FindControl("literalHeader") as Literal;

        fieldName().ForEach(delegate(string fn)
        {
            if (hdnColumnName.Value != fn.ToString())
            {
                sb.Append("<th width=\"10%\"> <a id=\"btnCustomerName\" class=\"sort desc\" onclick=\"btnSorts_onclick()\" style=\"cursor:pointer;text-decoration: none !important;\" >"
                    + fn.ToString() + "</a></th>");
            }
            else
            {
                if (hdnColumnOrder.Value == "sort asc")
                    sb.Append("<th width=\"10%\"> <a id=\"btnCustomerName\" class=\"sort desc\"  onclick=\"btnSorts_onclick()\" style=\"cursor:pointer;text-decoration: none !important;\" >"
                   + fn.ToString() + "</a></th>");
                else
                    sb.Append("<th width=\"10%\"> <a id=\"btnCustomerName\" class=\"sort asc\" onclick=\"btnSorts_onclick()\" style=\"cursor:pointer;text-decoration: none !important;\">"
                                               + fn.ToString() + "</a></th>");
            }
        });
        li.Text = sb.ToString();

    }

}
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
    if (e.Item.FindControl("literals") != null)
    {
        DataRowView drv = (DataRowView)e.Item.DataItem;
        Literal li = e.Item.FindControl("literals") as Literal;
        StringBuilder sb = new StringBuilder();
        fieldName().ForEach(delegate(string fn)
        {
            sb.Append("<td>" + drv[fn.ToString()] + "</td>");
        });
        li.Text = sb.ToString();
    }
     }
   }

答案 3 :(得分:0)

您应该将数字文件计入文件夹

new File(<directory path>).listFiles().length