Windows编程 之临时文件 (笔记)

1.  函数说明

1.1  GetTempFileName

    创建一个临时文件,并返回临时文件的名字

【1】 lpPathName 路径名

【2】lpPrefixString 前缀

【3】uUnique 是否唯一,0为唯一,否则不是。当设置为0时,会创建一个空文件,否则只是返回一个文件名

【4】 返回的文件名,格式为  <path>\ <pre><uuuu>.TMP 

UINT WINAPI GetTempFileName(
  _In_   LPCTSTR lpPathName,
  _In_   LPCTSTR lpPrefixString,
  _In_   UINT uUnique,
  _Out_  LPTSTR lpTempFileName
);


2. 代码

/*
 * FileName: SystemTempFile.cpp 
 * Author:   JarvisChu
 * Date:     2012-11-14
 */

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

//switchs for the program
//notice: do not open more than one 

//#define TEMP_FILE
//#define PATH 
//#define FILE_TIME
#define FILE_ATTRIBUTE

#define BUFF_SIZE 256

int main()
{

//--------------------------------------------------------
#ifdef TEMP_FILE
	printf("--------Temp File----------------\n");
	DWORD nLen;
	TCHAR szFileName[BUFF_SIZE];
	TCHAR szLongPathBuff[BUFF_SIZE];
	TCHAR szShortPathBuff[BUFF_SIZE];


	GetTempFileName(_T("E:/Programming"),    //the directory to create the temp file. '.' represents the current directory
					_T("jc"),   //the prefix string of the temp file
					0,
					szFileName
				   );

	//the szFileName can be string like "./jc258.tmp" or "./jc454.tmp"
	//and the file named "jc258.tmp" or "jc454.tmp" have been created in the current directory
	printf(_T("TempFile Name: %s\n"),szFileName); 

	GetFullPathName(szFileName,BUFF_SIZE,szLongPathBuff,NULL);
	printf("FullPathName: %s\n",szLongPathBuff);  // E:/Programming\jc5EC.tmp

	nLen = lstrlen(szLongPathBuff);
	GetShortPathName(szLongPathBuff,szShortPathBuff,nLen);
	printf("ShortPathName: %s\n",szShortPathBuff);// E:\PROGRA~2\jc5EC.tmp
#endif

//--------------------------------------------------------
#ifdef FILE_TIME
	printf("--------File Time----------------\n");
	//GetFileTime()
	HANDLE hFile;
	FILETIME ftCreate,ftAccess,ftWrite,ftLocal;
	SYSTEMTIME stCreate;

	hFile = CreateFile(_T("C:/jarvischu.txt"),GENERIC_READ|GENERIC_WRITE,NULL,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
	GetFileTime(hFile,&ftCreate,&ftAccess,&ftWrite);

	// Convert the last-write time to local time.
    FileTimeToLocalFileTime(&ftWrite, &ftLocal);
	
    // Convert the local file time from UTC to system time.
    FileTimeToSystemTime(&ftLocal, &stCreate);
	
	HANDLE hConsoleOut = CreateFile("CONOUT$",GENERIC_WRITE,NULL,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	
	TCHAR szBuf[BUFF_SIZE];
	DWORD nLen,nWrite;

    // Build a string showing the date and time.
    wsprintf(szBuf,"%02d/%02d/%d  %02d:%02d\n",
        stCreate.wDay, 
		stCreate.wMonth,
		stCreate.wYear,
        stCreate.wHour, 
		stCreate.wMinute);
	nLen = lstrlen(szBuf);
	WriteConsole(hConsoleOut,szBuf,nLen,&nWrite,NULL);
#endif

//--------------------------------------------------------	
#ifdef PATH
	printf("--------FullPath & ShortPath----------------\n");
	DWORD nLen;
	TCHAR szLongPathBuff[BUFF_SIZE];
	TCHAR szShortPathBuff[BUFF_SIZE];	
	
	GetFullPathName(_T("E:/Programming/jarvischu.txt"),BUFF_SIZE,szLongPathBuff,NULL);
	printf("FullPathName: %s\n",szLongPathBuff);  //E:\Programming\jarvischu.txt
	
	nLen = lstrlen(szLongPathBuff);
	GetShortPathName(szLongPathBuff,szShortPathBuff,nLen);
	printf("ShortPathName: %s\n",szShortPathBuff);//E:\PROGRA~2\JARVIS~1.TXT
#endif

//--------------------------------------------------------
#ifdef FILE_ATTRIBUTE
	printf("--------File Attribute----------------\n");
	DWORD dwAttr;
	dwAttr = GetFileAttributes("E:/Programming/jarvischu.rar");
	if(dwAttr != -1) // -1 stands for file_not_exists or no rights to access the file
	{
		if( dwAttr & FILE_ATTRIBUTE_ARCHIVE)
		{
			printf("File is Archived!\n");
		}
		if (dwAttr & FILE_ATTRIBUTE_NORMAL)
		{
			printf("File is Normal!\n");
		}
	}

#endif
	
	return 0;
}


你可能感兴趣的:(Windows编程 之临时文件 (笔记))