我想把一个文件夹内的所有文件及文件夹合并为一个大文件,但不想用建立一个新文件再把其他文件读出再写入这个新文件的方法,因为那样太慢.我的思路是:直接更改磁盘上文件簇链信息,使多个文件首尾相连,这样一来就形成了一个大文件,再设置这个大文件的属性信息,这样在操作系统眼里就只有一个大文件了.
  但具体怎样实现,需要高手指点,用windows API能否做到? 怎样读写这些底层信息?

解决方案 »

  1.   

    windows API做不到,windows API不提供按簇访问文件的能力。
    我觉得该功能实现难度非常高,而且不合算。
      

  2.   

    你这样做可以在FAT,FAT32下实现,NTFS似乎很难,因为NTFS有$Secure文件,该文件记录了每个文件的保护信息,如果手动改了NTFS文件的簇号,那么$Secure就会出错了!在Win2000及以后操作系统可以通过OpenFile,
    CHAR szDrive[10];
    wsprintf(szDrive, "\\\\.\\%c:", 'C'); // 读写C逻辑盘的硬盘扇区
    HANDLE hDevice = CreateFile(szDrive, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,OPEN_EXISTING, 0, NULL);用ReadFile,WriteFile直接读写硬盘扇区
      

  3.   

    我已经在FAT32下实现了,用了三个月;谢谢各位;