如何在 c 中将文件从一个目录移动到另一个目录?

问题描述 投票:0回答:1

我正在创建一个项目,通过根据

c
中的特定类型创建子文件夹来移动目录文件。我已经在
POSIX
dirent.h
的帮助下为主目录中存在的具有不同扩展名的文件创建目录,但我不知道如何从主目录剪切文件并粘贴到其特定的子目录中文件夹。所以请指导我如何
cut
paste
文件从一个目录到另一个
c
.

c file-io
1个回答
0
投票

使用

rename(DestinationFilepath, SourceFilepath);

有关更多信息,请查看手册页http://linux.die.net/man/2/rename

对于两个不同的系统,使用 cURL 库: 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);
}
© www.soinside.com 2019 - 2024. All rights reserved.