检查目录中是否存在文件,忽略扩展名。

8
我正在使用.NET 2.0,Linq不可用。我想检查目录中是否存在文件,不需要知道文件扩展名
我只需要完成这个逻辑。
1. 使用搜索模式提供字符串文件名来检查目录中是否存在文件,忽略文件的扩展名。
2. 如果文件存在,则获取文件并进行数据绑定以提供下载链接。如果文件不存在,则开始上传文件。 更新:Directory.GetFiles()DirectoryInfo.GetFiles()确实解决了我检查文件是否存在的部分。关于FileInfo对象的性能,这些是满足我的数据绑定要求以提供下载链接的唯一解决方案。

2
为什么需要一个FileInfo对象? - Achinth Gurkhi
1
你可以为结果数组中的每个字符串创建一个 FileInfo 对象… 你有什么问题吗? - Steve B
3
它的成本并不比你所接受的答案更高,它仍然在内部创建FileInfo对象。 - Richard Friend
2
Directory.GetFiles已经提供了完整的文件名。引用自MSDN:"返回指定目录中与指定搜索模式匹配的(包括它们的路径)文件的名称"(强调为我的)。它有什么问题? - R. Martinho Fernandes
2
我点踩了,因为1)问题不清楚:我不明白需要解决的问题是什么;2)我不喜欢已被接受的答案。 - R. Martinho Fernandes
显示剩余9条评论
3个回答

20
DirectoryInfo root = new DirectoryInfo("your_directory_path");
FileInfo[] listfiles = root.GetFiles("dummy.*");
if (listfiles.Length > 0)
{
  //File exists
  foreach (FileInfo file in listfiles)
        {
            //Get Filename and link download here
        }
}
else
{
  //File does not exist
  //Upload
}

希望这个能够起作用。


1
显然,通过GetFiles实例化FileInfos的成本不太高。 - R. Martinho Fernandes
1
@Martinho就对问题的评论发表了评论。 - Deeptechtons

5

要判断文件是否存在,您可以使用以下方法:

但是,Directory.GetFiles 已经包含了完整路径

string [] files = Directory.GetFiles(Path,"name*");
bool exists =  files.Length > 0;

if ( exists)
{
   //Get file info - assuming only one file here..
    FileInfo fi = new FileInfo(files[0]);

    //Or loop through all files
    foreach (string s in files)
    {
         FileInfo fi = new FileInfo(s);
         //Do something with fileinfo
    }
}

1
感谢您指引我正确的方向,您的回答可能是正确的,但当涉及到可扩展性时,@Hatake Kakashi 的回答对我来说更好。 - Deeptechtons

2

1
谢谢你指引我去思考简单的方法。我之前一直在使用重载版本。 - Deeptechtons

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接