c檔案操作

來源:互聯網
上載者:User

一、刪除檔案

1.c 調用dos命令: system(char *cmd); 如 system( "del d:\\chang\\xxx.txt "); 刪除檔案

2.調用api: 刪除一個檔案: int remove(char *filename ); 返回0 成功 -1失敗

3.DeleteFile("d:\\new.txt");   //刪除一個檔案

BOOL DeleteFile(LPCTSTR filename);

4._unlink( filename )                //失敗時返回 -1 

 

二、重新命名(也可通過後面介紹的 move,copy實現)

rename(oldname,newname)                         //成功時返回 0

 

三、建立目錄

1.mkdir("c:\\info\\world");        //失敗時返回 -1 

2.單級(sa 為安全屬性,取 NULL 預設),多級目錄需自訂

BOOL CreateDirectory(LPCTSTR dirname, LPSECURITY sa);

 3.多級

system("mkdir c:\\a\\b\\c");

 

四、列出目錄下的檔案資訊

void  listAll(char *path){
WIN32_FIND_DATA findData;
HANDLE listFile;
  
  strcat(path, "\\*");              //代表列出所有檔案
//FindFirstFile("d:\\htdocs\\*.txt",&findData)
listFile = FindFirstFile(path, &findData);
do{
if(lstrcmp(findData.cFileName,TEXT("."))==0||
lstrcmp(findData.cFileName,TEXT(".."))==0)
continue;
printf("%s\t\t",findData.cFileName);
if(findData.dwFileAttributes&FILE_ATTRIBUTE_HIDDEN)
printf("hidden\t\t");
if(findData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)
printf("DIR\t\t");
printf("\n");
}while(FindNextFile(listFile,&findData));
}

五、讀取檔案修改時間

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
DWORD ShowFileTime(PFILETIME lptime);
int main(int argc, char *argv[])
{
//檔案屬性結構
WIN32_FILE_ATTRIBUTE_DATA wfad;
//擷取檔案屬性
GetFileAttributesEx("d:\\htdocs\\index.html",GetFileExInfoStandard,&wfad);

ShowFileTime(&(wfad.ftLastWriteTime));
//ShowFileSize(wfad.nFileSizeHigh,wfad.nFileSizeLow);

return 0;
}

DWORD ShowFileTime(PFILETIME lptime){
FILETIME ftLocal;
SYSTEMTIME st;
FileTimeToLocalFileTime(lptime,&ftLocal);
FileTimeToSystemTime(&ftLocal,&st);

printf("%4d/%02d/%02d",st.wYear,st.wMonth,st.wDay);
return 0;
}

六、讀取檔案大小

1.

findfirst的第三個參數可以具有下列值: 

#define   FA_RDONLY 0x01    /*   Read   only   attribute   */ 

#define   FA_HIDDEN 0x02    /*   Hidden   file   */ 

#define   FA_SYSTEM 0x04   /*   System   file   */ 

#define   FA_LABEL 0x08      /*   Volume   label   */ 

#define   FA_DIREC 0x10     /*   Directory   */ 

#define   FA_ARCH 0x20     /*   Archive   */ 

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
DWORD ShowFileSize(DWORD dwHigh,DWORD dwLow);
int main(int argc, char *argv[])
{
//檔案屬性結構
WIN32_FILE_ATTRIBUTE_DATA wfad;
//擷取檔案屬性
GetFileAttributesEx("d:\\test.txt",GetFileExInfoStandard,&wfad);

ShowFileSize(wfad.nFileSizeHigh,wfad.nFileSizeLow);

return 0;
}

DWORD ShowFileSize(DWORD dwHigh,DWORD dwLow){
ULONGLONG liFileSize;
liFileSize = dwHigh;
liFileSize <<= sizeof(DWORD)*8;
liFileSize += dwLow;

printf("%I64u\n",liFileSize);
return 0;
}

2.直接調用系統函數,更方便。fsh 可設定為 NULL。

DWORD GetFileSize(HANDLE hf, LPDWORD fsh);

 

七、實現所有檔案的遍曆

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

DWORD listAllFile(LPSTR path);
DWORD listAllFile(LPSTR path){
WIN32_FIND_DATA findData;
HANDLE listFile;
char fullPath[100];
char tempPath[100];

lstrcpy(tempPath,path);
lstrcat(tempPath,"\\*");

listFile = FindFirstFile(tempPath,&findData);
do{
if(lstrcmp(findData.cFileName,TEXT("."))==0||
lstrcmp(findData.cFileName,TEXT(".."))==0)
continue;
//printf("%s\t\t",findData.cFileName);
//構成全路徑
wsprintf (fullPath,"%s\\%s",path,findData.cFileName);
printf("%s\n",fullPath);

/*if(findData.dwFileAttributes&FILE_ATTRIBUTE_HIDDEN)
printf("hidden\t\t");*/
if(findData.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY){
listAllFile(fullPath);
}
}while(FindNextFile(listFile,&findData));

return 0;
}
int main(int argc, char *argv[])
{
listAllFile("e:\\linuxBooks");
return 0;
}

八、檔案讀操作

#include <stdio.h>
#include <stdlib.h>

int main()
{
int ch;
FILE *fp;
fp =fopen("aaa.txt","w");
while((ch = getc(fp)) != EOF){
putchar(ch);
}
fclose(fp);
return 0;
}

 

九、刪除目錄

1.rmdir( "ugg ");   //   刪除一個目錄,空

2.刪除存在的空目錄

BOOL RemoveDirectory(LPCTSTR path);

3.system("rmdir /s/q ugg");        //刪除非空檔案夾

 

 十、檢查檔案存在性及許可權

1.

int _access(const char *path, int mode);
mode Value Checks File For
00 Existence only
02 Write permission
04 Read permission
06 Read and write permission

2.自訂函數

BOOL FileExists(LPCTSTR filename, BOOL dircheck){    DWORD dwa = GetFileAttributes(filename);        if (dwa == 0xFFFFFFFF){        /* error */        return FALSE;    }        /* is a dir */    if ((dwa & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY){        if (dircheck){            return TRUE;        }else{            return FALSE;        }    }    else{        /* is a file */        if (!dircheck){            return TRUE;        }else{            return FALSE;        }    }}

 

 十一、檔案的複製與移動

//不覆蓋if(CopyFile("d:\\test.txt","c:\\test.txt",TRUE))    puts("檔案複製成功");if(CopyFile("d:\\test.txt","c:\\test.txt",FALSE))    puts("檔案覆蓋成功");if(MoveFile("d:\\test.txt","c:\\test.txt"))    puts("move");

另一個移動函數的原型(可覆蓋)dwflags :MOVEFILE_REPLACE_EXISTING (替換原有檔案)

BOOL MoveFileEx(LPCTSTR src, LPCTSTR dest, DWORD dwflags);

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.