⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_file.cpp

📁 对日本KSG震动探测仪器编写的伴侣服务代码
💻 CPP
字号:
// (Version 1.00 :: 10-Mar-1999 :: Harutoshi Yoshida)
/*===================================================================
	俠 俻倳倕倱倲
	-----------------------------------
		File Control Module
	-----------------------------------
	Program Name        : C_File.CPP
	Program Start       : 20-Sep-1998
	Program Change		: 31-Oct-1998(MK)
	Program Change		: 03-Dec-1998(MK)
	Program Completed   : 
===================================================================*/

#include	"stdafx.h"

#include	"C_Proc.h"
#include	"C_ComProc.h"
#include	"C_Work.h"
#if !C_FILE_INC
	#include	"C_File.h"
#endif


/*-------------------------------------
						m:24-Sep-1998
@p	<< Constract >>
-------------------------------------*/
CC_File::CC_File()
{
	int i;

	for (i=0; i<C_FILE_MAX; i++) {
		hHandle[i] = -1;
		aFileName[i] = NULL;
		pStream[i] = NULL;
	}
}

/*-------------------------------------
						m:24-Sep-1998
@p	<< Destract >>
-------------------------------------*/
CC_File::~CC_File()
{
	int i;

	for (i=0; i<C_FILE_MAX; i++) {
		if (hHandle[i] != -1) {
			_close(hHandle[i]);
		}
		if (pStream[i] != NULL) {
			fclose(pStream[i]);
		}
	}
}

/*-------------------------------------
						m:16-Oct-1998
@p	<< Creat >>
-------------------------------------*/
int		CC_File::Creat(LPCTSTR mFileName)
{
	int handle = -1;
	int i;

	for (i=0; i<C_FILE_MAX; i++) {
		if (hHandle[i] == -1) {
			handle = _creat(mFileName, _S_IREAD | _S_IWRITE);
			if (handle != -1) {
				aFileName[i] = mFileName;
				hHandle[i] = handle;
				handle = i;
			}
			break;
		}
	}
    return handle;
}

/*-------------------------------------
						m:24-Sep-1998
@p	<< Open >>
-------------------------------------*/
int		CC_File::Open(LPCTSTR mFileName, int mOpenMode)
{
	int handle = -1;
	int i;

	for (i=0; i<C_FILE_MAX; i++) {
		if (hHandle[i] == -1) {
			handle = _open(mFileName, mOpenMode);
			if (handle != -1) {
				aFileName[i] = mFileName;
				hHandle[i] = handle;
				handle = i;
			}
			break;
		}
	}
    return handle;
}

/*-------------------------------------
						m:24-Sep-1998
@p	<< Close >>
-------------------------------------*/
int		CC_File::Close(int mHandle)
{
	int ret = -1;

	if (hHandle[mHandle] != -1) {
		ret = _close(hHandle[mHandle]);
		if (ret != -1) {
			hHandle[mHandle] = -1;
		}
	}
    return ret;
}

/*-------------------------------------
						m:24-Sep-1998
@p	<< Read >>
-------------------------------------*/
int		CC_File::Read(int mHandle, char *mBuf, int mSize)
{
	int ret = -1;

	if (hHandle[mHandle] != -1) {
		ret = _read(hHandle[mHandle], mBuf, mSize);
	}
    return ret;
}

/*-------------------------------------
						m:24-Sep-1998
@p	<< Read >>
-------------------------------------*/
int		CC_File::Write(int mHandle, char *mBuf, int mSize)
{
	int ret = -1;

	if (hHandle[mHandle] != -1) {
		ret = _write(hHandle[mHandle], mBuf, mSize);
	}
    return ret;
}

/*-------------------------------------
						m:24-Sep-1998
@p	<< Read >>
-------------------------------------*/
int		CC_File::Seek(int mHandle, long mOffset, int mMode)
{
	int ret = -1;

	if (hHandle[mHandle] != -1) {
		ret = _lseek(hHandle[mHandle], mOffset, mMode);
	}
    return ret;
}

/*-------------------------------------
						m:03-Dec-1998
@p	<< fopen >>
-------------------------------------*/
int 	CC_File::FOpen(LPCTSTR lpFileName, LPCTSTR lpOpenMode)
{
	int i, handle = -1;
	FILE	*stream;

	for (i=0; i<C_FILE_MAX; i++) {
		if (pStream[i] == NULL) {
			stream = fopen(lpFileName, lpOpenMode);
			if (stream != NULL) {
				pStream[i] = stream;
				handle = i;
			}
			break;
		}
	}
    return handle;
}

/*-------------------------------------
						m:03-Dec-1998
@p	<< fclose >>
-------------------------------------*/
int		CC_File::FClose(int hHandle)
{
	int ret = -1;

	if (pStream[hHandle] != NULL) {
		ret = fclose(pStream[hHandle]);
		pStream[hHandle] = NULL;
	}
	return ret;
}

/*-------------------------------------
						m:03-Dec-1998
@p	<< fscanf >>
-------------------------------------*/
int		CC_File::FRead(int hHandle, LPCTSTR lpFormat, char *pBuf)
{
	int ret = -1;

	if (pStream[hHandle] != NULL) {
		ret = fscanf(pStream[hHandle], lpFormat, pBuf);
	}
	return ret;
}

/*-------------------------------------
						m:03-Dec-1998
@p	<< fprintf >>
-------------------------------------*/
int		CC_File::FWrite(int hHandle, LPCTSTR lpFormat, LPCTSTR lpBuf)
{
	return (fprintf(pStream[hHandle], lpFormat, lpBuf));
	int ret = -1;

	if (pStream[hHandle] != NULL) {
		ret = fprintf(pStream[hHandle], lpFormat, lpBuf);
	}
	return ret;
}


/*-------------------------------------
						m:13-Oct-1998
@p	<< 僼傽僀儖仌僨傿儗僋僩儕 儕僱乕儉 >>
堷悢丗	mOldName	尰嵼偺僼傽僀儖柤
		mNewName	怴婯偺僼傽僀儖柤
栠抣丗	 0		惉岟
		!0		幐攕
-------------------------------------*/
int		CC_File::C_Rename(LPCTSTR mOldName, LPCTSTR mNewName)
{
	return (rename(mOldName, mNewName));
}

/*=====================================
						m:24-Oct-1998
@p	<< 専弌偟偨僼傽僀儖柤偲専嶕僼傽僀儖僞僀僾偺斾妑 >>
堷悢丗	mDir	僨傿儗僋僩儕柤
		mTyp	僼傽僀儖僞僀僾(*.*, ABC??.*摍)
栠抣丗	堦抳	(侽)
		晄堦抳	(埲奜)
=====================================*/
int		CC_File::C_FileNameCmp(LPCTSTR mFileName, LPCTSTR mTyp)
{
	int i, tc, keep;
	char cmp_name[MAX_PATH];

	keep = 1;
	tc = 0;
	i = 0;
	while (keep) {
		switch (mTyp[tc]) {
		case '*':
			if (mFileName[i] == '.' || mFileName[i] == '\0') {
				tc ++;
			}
			if (mFileName[i] != '\0' && mFileName[i] != '.') {
				cmp_name[i] = mFileName[i];
				i ++;
			}
			break;
		case '?':
			if (mFileName[i] != '\0') {
				cmp_name[i] = mFileName[i];
				i ++;
			}
			tc ++;
			break;
		case '.':
			cmp_name[i] = mTyp[tc];
			tc ++;
			i ++;
			break;
		case '\0':
			cmp_name[i] = '\0';
			keep = 0;
			break;
		default:
			if (mTyp[tc] != '\0') {
				cmp_name[i] = mTyp[tc];
				tc ++;
				i ++;
			}
			break;
		}
	}
	return (_strnicmp(cmp_name, mFileName, i-1));
}

/*=====================================
						m:13-Oct-1998
@p	<< 僨傿儗僋僩儕埲壓偺僼傽僀儖悢庢摼 >>
堷悢丗	mDir	僨傿儗僋僩儕柤
		mTyp	僼傽僀儖僞僀僾(*.*, ABC??.*摍)
栠抣丗	専嶕僄儔乕廔椆	(亅侾)
		僼傽僀儖悢		(埲奜)
=====================================*/
int		CC_File::C_GetFileCnt(LPCTSTR mDir, LPCTSTR mTyp)
{
	int n, cnt;
	CFileFind finder;
	BOOL flg;
	char find_name[MAX_PATH];
	char find_dir[MAX_PATH];
	char dir_name[MAX_PATH];
	char tmp_name[MAX_PATH];
	CString tmp;

	cnt = 0;
	n = strlen(mDir);
	sprintf(find_dir, "%s", mDir);
	if (find_dir[n-1] != '\\') {
		find_dir[n+0]  = '\\';
		find_dir[n+1]  = '\0';
	}
	sprintf(find_name, "%s%s", find_dir, "*.*");
	flg = finder.FindFile(find_name);
	if (flg == TRUE) {
		while (flg) {
			flg = finder.FindNextFile();
			if (finder.IsDots()) continue;
			tmp = finder.GetFileName();
			sprintf(tmp_name, "%s", tmp);
			if (finder.IsDirectory()) {
				sprintf(dir_name, "%s%s", find_dir, tmp_name);
				cnt += C_GetFileCnt(dir_name, mTyp);
			}
			else {
				if (!C_FileNameCmp(tmp_name, mTyp)) {
					cnt ++;
				}
			}
		}
	}
	return cnt;
}

/*=====================================
						m:20-Oct-1998
@p	<< 僇儗儞僩僪儔僀僽庢摼 >>
堷悢丗	側偟
栠抣丗	僪儔僀僽斣崋
=====================================*/
int		CC_File::C_GetDrive()
{
	return (_getdrive());
}

/*=====================================
						m:26-Oct-1998
@p	<< 僇儗儞僩僪儔僀僽曄峏 >>
堷悢丗	僪儔僀僽斣崋
栠抣丗	 0		惓忢廔椆
		-1		僄儔乕敪惗
=====================================*/
int		CC_File::C_ChDrive(int drive)
{
	return (_chdrive(drive));
}

/*=====================================
						m:26-Oct-1998
@p	<< 僇儗儞僩僨傿儗僋僩儕庢摼 >>
堷悢丗	*buf		僨傿儗僋僩儕柤奿擺僶僢僼傽
		maxlen		僷僗柤偺嵟戝挿
栠抣丗	側偟
=====================================*/
void	CC_File::C_GetCrntDir(char *buffer, int maxlen)
{
	_getdcwd(C_GetDrive(), buffer, maxlen);
}

/*=====================================
						m:26-Oct-1998
@p	<< 僇儗儞僩僨傿儗僋僩儕曄峏 >>
堷悢丗	*dirname	曄峏僨傿儗僋僩儕柤
栠抣丗	 0			惓忢廔椆
		-1			僄儔乕敪惗
=====================================*/
int		CC_File::C_ChCrntDir(char *dirname)
{
	return (_chdir(dirname));
}

/*=====================================
						m:21-Oct-1998
@p	<< 僼傽僀儖僐僺乕 >>
堷悢丗	pszFrom		僐僺乕尦僼傽僀儖柤
		pszTo		僐僺乕愭僼傽僀儖柤
		bOperation	忋彂偒嬛巭僼儔僌
					 TRUE  : 忋彂偒嬛巭(僄儔乕偲偟偰張棟)
					 FALSE : 忋彂偒嫋壜
栠抣丗	!0			惓忢廔椆
		 0			僄儔乕
=====================================*/
int		CC_File::C_FileCopy(LPCTSTR pszFrom, LPCTSTR pszTo, BOOL bOperation)
{
	return (::CopyFile(pszFrom, pszTo, bOperation));
}

/*=====================================
						m:31-Oct-1998
@p	<< 巜掕僼傽僀儖懚嵼妋擣 >>
堷悢丗	lpFileName	僼傽僀儖柤(僼儖僷僗)
栠抣丗	 1			専弌
		 0			枹専弌
=====================================*/
int		CC_File::C_FileFind(LPCTSTR lpFileName)
{
	WIN32_FIND_DATA	findData;
	HANDLE			hHandle;
	int				ret;

	ret = 1;
	hHandle = FindFirstFile(lpFileName, &findData);
	if (hHandle == INVALID_HANDLE_VALUE) {
		ret = 0;
	}
	return ret;
}

/*=====================================
						m:31-Oct-1998
@p	<< 巜掕僼傽僀儖嶍彍 >>
堷悢丗	lpFileName	僼傽僀儖柤(僼儖僷僗)
栠抣丗	 0			惓忢廔椆
		!0			僄儔乕
=====================================*/
int		CC_File::C_FileDelete(LPCTSTR lpFileName)
{
	return (remove(lpFileName));
}

/*=====================================
						m:18-Dec-1998
@p	<< 巜掕僨傿儗僋僩儕嶌惉 >>
堷悢丗	lpDirName	僼傽僀儖柤(僼儖僷僗)
栠抣丗	 0			惓忢廔椆
		!0			僄儔乕
=====================================*/
int		CC_File::C_MakeDir(LPCTSTR lpDirName)
{
	int ret = 0;

	if (C_FileFind(lpDirName) == 0) {
		ret = _mkdir(lpDirName);
	}
	return ret;
}

/*=====================================
						m:26-Dec-1998
@p	<< 巜掕僼傽僀儖偺懏惈妋擣 >>
堷悢丗	lpFileName	僼傽僀儖柤(僼儖僷僗)
栠抣丗	廔椆矫袄

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -