none
文件操作 RRS feed

  • 问题

  • 一个目录下有若干个文件夹,文件夹的个数是动态创建的,是根据程序确定的。比如创建了3个文件夹:7路,21路,32路。每个文件夹下放的都是mp3文件,有相同的文件,比如:每个文件夹下都有“转弯.mp3”,也有不同的文件.想要实现的功能是:把所有的相同的mp3文件只保留一个,其余的都删除然后写入一个.syslink文件,写入剩余的那个没有删除的文件的相对路径,具体保留哪一个无所谓.判断文件是否相同是用文件的MD5值是否相同来判断。
    我的问题是,怎么确定保留的文件。
    2009年4月13日 7:41

答案

  • 一次循环就可以的,伪代码:
    先定义一个保存文件的对象,如数组,集合等fs;
    开始遍历文件夹下的文件
    遍历的时候,将每一个文件存入fs里,下一个文件写入前判断是否已经在fs,存在就删除,否则就加入
    孟宪会
    2009年4月16日 11:46
    版主

全部回复

  • 你先遍历文件夹,保留第一个,得到相对路径,然后再找到相同的就删除,并写入.syslink文件
    孟宪会
    2009年4月13日 12:19
    版主
  • 遍历文件夹,第一个就保存,同时记录保存的文件名和MD5值,其他的就删除呗。
    微软认证程序开发专家:Web Developer (MCPD: Web Developer)
    2009年4月14日 1:10
  • struct Mp3info2
     {
      public string name;
      public string code;
     }


    ArrayList arraylist = new ArrayList();


    Mp3info2 mp3info;
    ...
    //mp3info.name=......
    //mp3info.code=.......
    ...
    arraylist.Add(mp3info); 此时每个mp3info已经存有name,和code,但是有相同的。


    请问怎么保留第一个,找到相同的就删除?
    for (int i = 0; i < arraylist.Count; i++)
       {
            if (((Mp3info2)arraylist[j]).code ==......)
              //???????????
       }
    2009年4月14日 4:50
  • 你好

    如果根据上面两位的意思,你要两个循环实现。

    首先要获取文件夹集合,假设为fs;
    mp3文件集合为 mp3Collection1;

    for (int i = 0; i < fs.Count; i++)
       {
           //从每个文件夹中获得mp3Collection1
           for(int j=0;j<mp3Collection1.Count();j++)
           {
               for (int J =  i+1; J < fs.Count; J++)
             {
              //判断该mp3文件是否存在其它文件夹中,
              //如果存在则做相应的操作
            }
          }
         
         
       }
    Microsoft Online Community Support
    2009年4月16日 7:49
  • 一次循环就可以的,伪代码:
    先定义一个保存文件的对象,如数组,集合等fs;
    开始遍历文件夹下的文件
    遍历的时候,将每一个文件存入fs里,下一个文件写入前判断是否已经在fs,存在就删除,否则就加入
    孟宪会
    2009年4月16日 11:46
    版主