c獲取文件夾中
① 使用vc,如何獲取win7的用戶文件夾路徑 C:\Users\Public和C:\Users\用戶名
你好,你可以用以下方法來獲得該路徑。
在Windows里,用戶的特殊路徑都存放在注冊表裡。
位置在:HEY_CURRENT_下面
獲取的方法:
HKEYmyKey;
if(ERROR_SUCCESS!=RegOpenKey(HKEY_CURRENT_USER,"Software\Microsoft\Windows\CurrentVersion\Explorer\ShellFolders",&myKey))
{
cout<<"注冊表打開失敗!"<<endl;
return1;
}
DWORDdwType;
DWORDdwSize=200;
charstring[200];
if(ERROR_SUCCESS!=RegQueryValueEx(myKey,(LPSTR)"Desktop",NULL,&dwType,(BYTE*)string,&dwSize))
{
cout<<"讀取desktop數據失敗!"<<endl;
return1;
}
RegCloseKey(myKey);
但是該子項下面的路徑都是你要的那個路徑的子路徑(如:C:UsersPublicDesktop)。
你可以通過使用下面幾個函數的組合來獲得父路徑(C:UsersPublic):
TCHARszPath[_MAX_PATH];
將子路徑strcpy入szPath;
TCHARszDrive[_MAX_DRIVE];
TCHARszDir[_MAX_DIR];
TCHARszFName[_MAX_FNAME];
TCHARszExt[_MAX_EXT];
_tsplitpath(szPath,szDrive,szDir,szFName,szExt);
_tmakepath(szPath,szDrive,szDir,_T(""),_T(""));
希望我的回答能夠對你有所幫助!
② C# 遍歷文件夾下所有子文件夾中的文件,得到文件名
輸入某文件夾路徑,遍歷該文件夾及其子文件夾(包括子文件夾的子文件夾等),獲取其中所有文件的函數:
/// <summary>
/// 查找指定文件夾下指定後綴名的文件
/// </summary>
/// <param name="directory">文件夾</param>
/// <param name="pattern">後綴名</param>
/// <returns>文件路徑</returns>
public void GetFiles(DirectoryInfo directory, string pattern, ref List<string> fileList)
foreach (FileInfo info in directory.GetFiles(pattern))
catch (System.Exception ex)
foreach (DirectoryInfo info in directory.GetDirectories())//獲取文件夾下的子文件夾
語言結構
類:一個基本的C#類中包含數據成員、屬性、構造器和方法。屬性可以是靜態或實例成員。在C#中類的聲明與C++和Java很相似。但是,不像C++,C#結構體與類是不支持繼承多個父類。但是,與Java相同的是,一個結構體可以實現介面(interface)。Java的關鍵字import已經被替換成using,它起到了同樣的作用。
以上內容參考:網路-c#
③ C語言怎麼讀取某一文件夾下的所有文件夾和文件
讀取的代碼方式如下:
intmain()
{
longfile;
struct_finddata_tfind;
_chdir("d:\");
if((file=_findfirst("*.*",&find))==-1L)
{
printf("空白! ");
exit(0);
}
printf("%s ",find.name);
while(_findnext(file,&find)==0)
{
printf("%s ",find.name);
}
_findclose(file);
return0;
}
④ vc函數GetFileTime獲取文件夾的訪問時間時問題
通常,文件、文件夾的時間屬性指的是創建時間、最近訪問時間和最近修改時間等幾個具體屬性。對於文件的上述屬性可以通過GetFileTime()來獲取,對於文件夾,在通過CreateFile()函數將其打開後,其獲取得到的句柄可以當作文件句柄來使用。因此,通過GetFileTime()函數同樣也可以得到文件夾的時間屬性。GetFileTime()函數原型如下:
BOOLGetFileTime(
HANDLE hFile, // 文件句柄
LPFILETIME lpCreationTime, // 創建時間的地址
LPFILETIME lpLastAccessTime, //最近訪問時間的地址
LPFILETIME lpLastWriteTime // 最近修改時間的地址
);
其中後三個參數均是指向FILETIME結構的指針,得到的也都是UTC時間,如果需要,可以通過FileTimeToLocalFileTime()函數將此UTC時間轉化成本地時間。而且還可以進一步通過FileTimeToSystemTime()函數將其從文件時間格式轉化成系統時間格式,轉化後的時間格式將保存在一個SYSTEMTIME結構對象中。類似的,在將時間信息寫入到文件夾屬性時,如果不是文件時間格式也應當通過SystemTimeToFileTime()函數將其從系統時間格式轉換成文件時間格式,然後再通過SetFileTime()函數將指定的時間寫入到文件夾的時間屬性中去。這樣,在進行數據備份和恢復的過程中,包括根目錄在內的所有文件夾都可以保持時間屬性的一致。
// 獲取指定文件夾的時間屬性,入口參數DirName指定了待處理的文件夾,
//stime為一指向SYSTEMTIME結構的指針
BOOLCSetForderTimeDlg::GetDirTime(CString DirName, SYSTEMTIME &stime){
// 打開文件夾
HANDLE hDir = CreateFile (DirName,GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
FILETIME lpCreationTime; // 文件夾的創建時間
FILETIME lpLastAccessTime; // 對文件夾的最近訪問時間
FILETIME lpLastWriteTime; // 文件夾的最近修改時間
// 獲取文件夾時間屬性信息
if (GetFileTime(hDir,&lpCreationTime, &lpLastAccessTime, &lpLastWriteTime)){
FILETIME ftime;
FileTimeToLocalFileTime(&lpLastWriteTime,&ftime); // 轉換成本地時間
FileTimeToSystemTime(&ftime,&stime); // 轉換成系統時間格式
}
CloseHandle(hDir); // 關閉打開過的文件夾
return retval;
}
// 設置指定文件夾的時間屬性,入口參數DirName指定了待處理的文件夾,
//new_time為一指向SYSTEMTIME結構的指針
BOOLCSetForderTimeDlg::SetDirTime(CString DirName, SYSTEMTIME new_stime){
// 打開目錄的Win32 API調用
HANDLE hDir = CreateFile(DirName,GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_DELETE,
NULL, OPEN_EXISTING,
FILE_FLAG_BACKUP_SEMANTICS, NULL);
FILETIME lpCreationTime; // 文件夾的創建時間
FILETIME lpLastAccessTime; // 對文件夾的最近訪問時間
FILETIME lpLastWriteTime; // 對文件夾的最近修改時間
SystemTimeToFileTime(&new_stime,&lpCreationTime); // 轉換成文件時間格式
SystemTimeToFileTime(&new_stime,&lpLastAccessTime);
SystemTimeToFileTime(&new_stime,&lpLastWriteTime);
CloseHandle(hDir); // 關閉文件夾
return retval;
}
⑤ C++用libcurl庫GET網頁(比如baidu.com)並將獲取到的網頁內容保存到本地文件夾中
#include <io.h>
#include "curl/curl.h"
#pragma comment(lib, "ws2_32.lib")
#pragma comment ( lib, "libcurl.lib" )
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "winmm.lib" )
#pragma comment ( lib, "wldap32.lib" )
//這是libcurl接收數據的回調函數,相當於recv的死循環
//其中stream可以自定義數據類型,這里我傳入的是文件保存路徑
static size_t write_callback( void *ptr, size_t size, size_t nmemb, void *stream )
{
int len = size * nmemb;
int written = len;
FILE *fp = NULL;
if ( access( (char*)stream, 0 ) == -1 )
{
fp = fopen( (char*) stream, "wb" );
}
else
{
fp = fopen( (char*) stream, "ab" );
}
if (fp)
{
fwrite( ptr, size, nmemb, fp );
}
return written;
}
int GetUrl( const char *url, char *savepath )
{
CURL *curl;
CURLcode res;
struct curl_slist *chunk = NULL;
curl = curl_easy_init();
if ( curl ) {
curl_easy_setopt( curl, CURLOPT_VERBOSE, 0L );
curl_easy_setopt( curl, CURLOPT_URL, url );
//指定回調函數
curl_easy_setopt( curl, CURLOPT_WRITEFUNCTION, write_callback);
//這個變數可作為接收或傳遞數據的作用
curl_easy_setopt( curl, CURLOPT_WRITEDATA, savepath );
res = curl_easy_perform( curl );
if (res == CURLE_OK)
{
return 1;
}
return 0;
}
}
int main( void )
{
if ( GetUrl( "t.sina.com.cn", "c:/1.txt" ) )
{
printf( "OK" );
}
return 0;
}