📄 c_file.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 + -