0

アプリで ramdon エラーが発生しました。新しいファイルが生成され、そのサイズが0Kの場合、txtファイルへのアクセスが拒否されました。

既存のファイルをコピーして、現在のファイルを閉じた後に名前を変更したいだけです。

ファイルをコピーする方法を教えてもらえますか? ありがとう。

以下の私のコードスニペット。

ofstream    m_LogFile;

CFile   logcfile;

if(dwLength > 1024*1024*10 )
        {
            string fileDate = status.m_mtime.Format("%Y%m%d%H%M%S");        
            string modulePath = Util::GetModulePath();
            string fileNewName(modulePath);
            fileNewName += "mytextlog" + fileDate + ".txt";
            m_LogFile.close();
                           // I want to insert CFile copy method before rename it.
            logcfile.Rename(m_sLogFileName.c_str(), fileNewName.c_str());
            m_LogFile.open(m_sLogFileName.c_str(), ios::out | ios::app);
            _findfile(modulePath.c_str());
        }

上記のコードが原因でアプリのエラーが発生したと想定しました。

4

2 に答える 2

1

CFile には、ファイルをコピーするメソッドがありません。

::CopyFile() 関数を使用して、ファイルを開いたり閉じたりする必要なく、単純にファイルをコピーします。

于 2012-04-25T06:18:31.307 に答える
0

はい CFile にはファイルをコピーするメソッドがありません。前に投稿した ::CopyFile Win32 メソッドを使用できます。または、CFile には別の (少し複雑な) 方法があります。CFile::Openメソッドの例を参照してください。

于 2012-04-25T06:35:57.217 に答える