2014-04-04 151 views
0

我正在通过在c中根据其特定类型创建子文件夹来创建移动目录文件的项目。我已经通过POSIXdirent.h帮助创建了目录,用于主目录中具有不同扩展名的文件但我不知道如何从主目录中剪切文件并粘贴到其特定的子文件夹中。请引导我如何在一个目录中将cutpaste文件从c中移到另一个目录中。如何将文件从一个目录移动到另一个目录?

+0

请参考http://msdn.microsoft.com/en-us/library/cc148994.aspx,希望这将解决这个问题 – Sorcrer

回答

-1

使用

重命名(DestinationFilepath,SourceFilepath);

更多信息检查手册页http://linux.die.net/man/2/rename

两个不同的系统使用卷曲库。 http://en.wikipedia.org/wiki/CURL

C代码

#include <unistd.h> 
#include <stdio.h> 
#include <dirent.h> 
#include <string.h> 
#include <sys/stat.h> 
#include <stdlib.h> 
#include <time.h> 

#define DESTINATION_FOLDER "/home/second/" 
#define SOURCE_FOLDER "/home/first/" 

void printdir() 
{ 
    DIR *dp; 
    struct dirent *entry; 
    struct stat statbuf; 
    struct tm  *tm; 

    char src_folder[1024]; 
    char dest_folder[1024]; 


    if((dp = opendir(SOURCE_FOLDER)) == NULL) { 
     fprintf(stderr,"cannot open directory: %s\n", SOURCE_FOLDER); 
     return; 
    } 
    chdir(SOURCE_FOLDER); 
    while((entry = readdir(dp)) != NULL) { 
     lstat(entry->d_name,&statbuf); 

     if(!S_ISDIR(statbuf.st_mode)) \ 
     { 
      sprintf(src_folder,"%s%s", SOURCE_FOLDER,entry->d_name); 
      sprintf(dest_folder,"%s%s", DESTINATION_FOLDER,entry->d_name); 
      printf("%s----------------%s\n",entry->d_name,dest_folder); 
      rename(src_folder, dest_folder); 
     } 
    } 
    chdir(".."); 
    closedir(dp); 
} 

int main() 
{ 
    while(1) 
    { 
     printdir(); 
    } 
    rename("aaa.txt", "/home/second/bbb.txt"); 
    printf("done.\n"); 
    exit(0); 
} 
+1

这只会如果源工作和目标位于同一个分区上。 – alk

+0

同分区表示??? – someone

+0

@someone请给我一些参考lstat()函数。 – YakRangi

相关问题