比如说我A文件夹下应该有1.txt文件,但是我放的是2.txt文件,控制台就会告诉我这个文件位置放错了,2.txt应该放在B文件夹里。
请问这个要如何实现啊?

解决方案 »

  1.   

    if (!System.IO.File.Exists("c:\\a\\1.txt"))
        //不存在
      

  2.   

    流程:
    1. Dictionary<string, string> 保存目录和对应的文件名
    2. 遍历文件夹,并和上面字典内的值对比,不一样报告出来
      

  3.   

    var file = new FileInfo(@"c:\a\1.txt");
    if(file.Exists)
      为真就存在喽
      

  4.   

    var both = new FileInfo(@"c:\a\1.txt");
    if(!both.Exists)
    {
        //这里写上如果不存在你要做什么.
    }
    else{
        //若存在要做什么.
    }
      

  5.   

    谢谢楼上各位的回答,我照楼上各位做了,但是目前情况是,他只能检测出文件夹下是否存在文件,无法检测文件夹下是否放对了文件,请问后一步如何处理??附上我的代码:using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.IO;class ListAllFilesDemo
    {
        public static void Main()
        {
            Console.Write("请输入要查询的目录:   ");
            string dir = Console.ReadLine();
            try
            {
                ListFiles(new DirectoryInfo(dir));
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadKey();
        }    public static void ListFiles(FileSystemInfo info)
        {
            if (!info.Exists) return;        DirectoryInfo dir = info as DirectoryInfo;
            //不是目录 
            if (dir == null) return;        FileSystemInfo[] files = dir.GetFileSystemInfos();
            for (int i = 0; i < files.Length; i++)
            {
                FileInfo file = files[i] as FileInfo;
                //是文件 
                if (file != null)
                    Console.WriteLine(file.FullName + "\t " + file.Length);
                //对于子目录,进行递归调用 
                else
                    ListFiles(files[i]);
            }
            var both = new FileInfo(@"d:\\test\\1\\a.txt");
            if (!System.IO.File.Exists("d:\\test\\1\\a.txt"))
            {
                Console.WriteLine("t");
            }
            else
            {
                Console.WriteLine("f");
            }
        }
    }请指教哪里不对?
      

  6.   


    private void process()
    {
    // 这里假设d:/test/目录下只有一级文件夹,即,D:/test/下只有1,2,3,4,5,6 之类的文件,而1下面再也没有文件夹了。而这些1,2,3文件夹下的文件名,只有a.txt,b.txt,c.txt.....
    var files = Directory.GetFiles( @"D:/test/" );
    Regex reg = new Regex( @"(D:/test/)([^/]*)/([^.]*\.txt)", RegexOptions.IgnoreCase );
    if ( files != null )
    {
    int fileCount = 0; // 文件总数
    int errCount = 0; //错误总数
    foreach ( var file in files )
    {
    var m = reg.Match( file );
    if ( m.Success )
    {
    fileCount++;
    if ( getDirName( m.Groups[3].Value ) == m.Groups[2].Value )
    {
    // 移到正确的位置
    File.Move( file, m.Groups[1].Value + getDirName( m.Groups[3].Value ) + m.Groups[3].Value );
    }
    else
    errCount++;
    }
    }
    } // 总数:fileCount;
    // 错误:errCount;
    // 错误率:errCount/(fileCount * 1.0)
    }
    /// <summary>
    /// 判断该文件应该放在什么文件夹下(也就是对应规则设置的地方了,假设文件名是A.txt,B.txt等等)
    /// </summary>
    /// <param name="fileName"></param>
    /// <returns></returns>
    private string getDirName( string fileName )
    {
    /// 即,表示,如果文件名第一个符是A。则返回应该存放的文件夹名应该是 1,如果是Z的话,则返回26
    return Convert.ToInt32( fileName[0] - 'A' + 1 ).ToString();
    //// 或者
    //switch ( fileName )
    //{
    //    case "A.txt": return "1";
    //    case "B.txt": return "2";
    //    default: return "";
    //}
    }