精华内容
下载资源
问答
  • CFile

    2017-03-21 20:52:50
    // code1 CFile file; std::string strlog = “asdf\r\n”;...file.Open(“log.txt”,CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite); file.SeekToEnd(); for(int i=0;i;i++){ file.Write(st

    // code1
    CFile file;
    std::string strlog = “asdf\r\n”;
    file.Open(“log.txt”,CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite);
    file.SeekToEnd();
    for(int i=0;i<10;i++){
    file.Write(strlog.c_str(),strlog.size());
    }
    file.Close();
    cout << “success1” << endl;

    // code2
    CFile cfile;
    cfile.Open(_T(“write.txt”),CFile::modeCreate | CFile::modeReadWrite);
    char szBufWrite[100];
    memset(szBufWrite,’a’,sizeof(szBufWrite));
    cfile.Write(szBufWrite,100);
    cfile.Flush();
    cfile.SeekToBegin();
    char szBufRead[100];
    cfile.Read(szBufRead,100);

    for(int i=0;i<100;i++){
    cout << szBufRead[i] << ’ ‘;
    if(((i + 1) % 5) == 0)
    cout << endl;
    }

    cout << szBufRead << endl;

    ASSERT(0 == memcmp(szBufWrite,szBufRead,sizeof(szBufWrite)));

    // code3
    CFile cfile;
    if(!cfile.Open(_T(“file.txt”),CFile::modeCreate | CFile::modeWrite))
    {
    AfxMessageBox(_T(“can not open file!”));
    return -1;
    }
    CString output = _T(“Life is beautiful.”);
    cfile.Write(output,output.GetLength()*sizeof(TCHAR));

    cfile.Flush();
    cfile.Close();

    // code4
    CStdioFile mFile;
    CFileException mExcept;
    if(!mFile.Open(_T(“test.bat”),CFile::modeCreate | CFile::modeReadWrite,&mExcept))
    {
    AfxMessageBox(_T(“can not open file.”));
    return -1;
    }
    CString str = _T(“echo off\r\n”);
    mFile.WriteString(str);
    str = _T(“echo I’m liangjisheng.\r\n”);
    mFile.WriteString(str);
    str = _T(“pause”);
    mFile.WriteString(str);
    mFile.Close();

    展开全文
  • CFile学习

    2017-10-30 20:30:45
    CFile类的声明保存在afx.h头文件中。 CFile类是MFC文件类的基类,提供非缓冲方式的二进制磁盘输入、输出功能;并直接通过派生类来支持文本文件和内存文件。提供访问本地文件内容的功能,不支持访问网络文件的功能...

     CFile类的声明保存在afx.h头文件中。

    CFile类是MFC文件类的基类,提供非缓冲方式的二进制磁盘输入、输出功能;并直接通过派生类来支持文本文件和内存文件。提供访问本地文件内容的功能,不支持访问网络文件的功能。

    CFile类的成员变量:
    m_hFile:表示一个打开文件的操作系统文件句柄。通过对m_hFile  CFile::hFileNull的比较来判断该文件是否已经打开。
     
    CFile类的成员函数:
    1、构造函数类
    CFile()在创建一个CFile对象时,我们可以采用3种方法实现。
    ACFile myFile;
       myFile.Open(LPCTSTR lpFileNameUINT nOpenFlagsCFileException * pError = NULL);
     
    BCFile myFile(int hFile); 采用句柄方式创建
       使用该创建方法,在之前需要调用 CreateFile()函数,该函数的声明如下:
           HANDLE CreateFile(
     LPCTSTR lpFileName, 文件名称
     DWORD   dwDesiredAccess, 文件访问的模式
     DWORD   dwShareMode,     文件的共享模式
     LPSECURITY_ATTTRIBUTE lpSecurityAttribute,  
     DWORD   dwCreationDisposition,   怎么访问
     DWORD   dwFlagsAndAttribute,    文件属性
     HANDLE hTemplateFile,          临时文件句柄
    );
       handle = ::CreateFile(
    “new.tmp”,
    GENERIC_READ|GENERIC_WRITE,
    0,
    NULL,
    OPEN_ALWAYS,
    FILE_FLAG_DELETE_ON_CLOSE,NULL
    );
     
    CCFile(LPCTSTR lpFileName,UINT nOpenFlags); 文件名称,可以是相对路径,绝对路径或者网络路径。
           Throw(CFileException);
     
           关于打开文件所选用的方式介绍:
           CFile::modeCreate 构造新文件,如果文件存在,则长度变为0
           CFile::modeNoTruncate 该属性和modeCreate联合使用,可以达到如下效果:如果文件存在,则不会将文件的长度置为0,如果不存在,则会由modeCreate属性来创建一个新文件。
           CFile::modeRead   以只读方式打开文件
           CFile::modeWrite   以写方式打开文件
           CFile::modeReadWrite 以读、写方式打开文件
           CFile::modeNoInherit 阻止文件被子进程继承
           CFile::shareDenyNone 不禁止其它进程读写访问文件,但如果文件已经被其它进程以兼容模式打开,则创建文件失败。
           CFile::shareDenyRead   打开文件,禁止其它进程读此文件,如果文件已经被其它进程以兼容模式打开,或被其它进程读,则create失败。
           CFile::shareDenyWrite 打开文件,禁止其它进程写此文件,如果文件已经被其它进程以兼容模式打开,或被其它进程写,则create失败。
           CFile::shareExclusive   以独占模式打开文件,禁止其它进程对文件的读写,如果文件已经被其它模式打开读写(即使是当前进程),则构造失败。
           CFile::shareCompat    此模式在32MFC中无效,此模式在使用CFile::Open时被映射为CFile::ShareExclusive
           CFile::typeText        对回车、换行设置特殊进程(仅用于派生类)
           CFile::typeBinary      设置二进制模式(仅用于派生类)
     
    virtual void Close();
    Throw(CFileException);
    关闭文件和对应的CFile对象。如果在删除了对象之前没有关闭文件,那么析构函数会为你而关闭文件。如果你时用new方式创建的CFile对象,那么你必须在删除了CFile对象后关闭文件。Close函数将设置m_hFileCFile::hFileNull。该函数和创建CFile对象函数成对使用。
     
    virtual void Abort();
    该函数和Close()函数功能一样,不同的地方有两点:Abort函数不会抛出异常和错误,将他们忽略;如果这个文件以前没有打开或者关闭则Abort就不能ASSERT
     
    virtual CFile* Duplicate() const;
    throw(CFileException);
    为已建立对象的文件在建立一个CFile对象副本。
     
    virtual BOOL Open(LPCTSTR lpFileName,UINT nOpenFlags,CFileException* pError = NULL);
           该函数执行成功则返回非0值,不成功为0
     
    2、从文件读入/向文件写内容函数
    virtual UINT Read(void* lpbuf,UINT nCount);
    throw(CFileException);
           该函数返回读到缓冲区的字节长度,注意:对于读入到文件尾部,则返回的字节长度会小于、等于nCount的值。该函数表示从当前位置读入nCount个字节的内容到lpbuf缓冲区。
     
    virtual void Write(const void *lpbuf, UINT nCount);
    throw(CFileException);
           该函数将缓冲区当前位置以后cCount长度的内容,写入到文件从当前位置开始的内容中,替换原来的nCount长度的内容。
     
    virtual void Flush();
    throw(CFileException);
           该函数将强迫保存在文件缓冲区的任何数据写入到文件中。对于CArchive则用CArchive::Flush
     
    3、对文件内容位置进行定位的函数:方便我们只读入部分文件内容或者从某个选定的位置写入设计的内容。该类函数全部用在open函数之后。
    virtual LONG Seek(LONG lOff , UINT nFrom);
    throw(CFileException);
    该函数需要定位的位置是合法的,Seek函数将返回从文件开始位置到需要定位位置的偏移量,否则会抛出CFileException异常。
    LONG lOff:指的是需要移动的字节数
    UINT nFrom:指的是开始查找的初始位置。该值必须是下面3个之一:CFile::begin CFile::currentCFileEnd(该值导致lOff为负值)
           该函数用在Read/Write函数之前。
           Open一个文件时,初始化的位置在文件开始出,偏移量是0
     
    virtual SeekToBegin();
    throw(CFileException);
           该函数将文件指针定位到文件头,等于Seek(0L,CFiel::begin);
     
    DWORD SeekToEnd();
    throw(CFileException);
           该函数返回文件的长度,把文件指针设置为文件尾,等于Seek(0L,CFile::end)
     
    virtual DWORD GetLength() const;
    throw(CFileException);
           该函数返回文件的长度,
     
    virtual void SetLength(DWORD dwNewLen);
    throw(CFileException);
           该函数用来设置文件的长度,即可以大于原来的长度,也可以小于原来的长度。如果大于原来的文件长,则会在原文件后面加入空格字符,如果小于原文件则会除去后面多于的字符。
     
    4.锁定文件内容函数
    virtual void LockRange(DWORD dwPos,DWORD dwCount);
    throw(CFileException);
    virtual void UnLockRange(DWORD dwPos,DWORD dwCount);
    throw(CFileException);
     
           dwPos:用来标识锁定的起始位置
           dwCount:用来表示锁定的字节数
           锁定内容的目的是为了不让其它的进程反问这段内容,可以对一个文件的多个区域进行锁定,但是锁定的内容区域不能有重合,否则会抛出错误。
     
    5、状态
    virtual DWORD GetPosition() const;
    throw(CFileException);
           该函数的返回值表示得到该文件的当前指针,目的是为了使用Seek函数。用在Open函数之后。
     
    BOOL GetStatus(CFileStatus& rStatus) const;
    Static BOOL PASCAL GetStatus(LPCTSTR lpFileName,CFileStatus &rStatus);
    成功获得指定文件的状态信息,返回值是TURE 0,不成功,为FALSE 0
    CFileStatus结构的包含的域:
                  CTime m_ctime:文件创建的日期和时间
                  CTime m_mtime:文件最后被修改的日期和时间
                  CTime m_atime:文件最后被访问的日期和时间
                  LONG m_size:文件的逻辑字节长度
                  BYTE m_attribute:文件的属性字节
                  char m_szFullName[_MAX_PATH]windows字符集中的绝对文件名。
     
           m_attributeMFC提供了枚举类型来表示各种文件属性。
            enum Attribute {
                   normal =    0x00,
                   readOnly =  0x01,
                   hidden =    0x02,
                   system =    0x04,
                   volume =    0x08,
                   directory = 0x10,
                   archive =   0x20
            };
           CFile::GetStatus()是通过MFCCFile对象的方式来获得相应打开文件的状态信息。不能向m_szFullName结构中插入值。必须open文件才能访问
           status 方式即便文件没有正真被open一样可以获得m_szFullName信息。
     
    virtual void SetFilePath(LPCTSTR lpNewName);
    该函数是将一个文件名(该文件可以并不存在)和CFile对象建立起联系,不是为了open CFileCreate CFile。用于opencreate一个CFile对象之前。
    如果要操作该CFile对象,如果该文件不存在则需要建立,如果已经建立则需要打开该对象进行操作。
     
    virtual CString GetFileName() const; 获得文件名”tmp.txt”
    virtual CString GetFilePath() const; 获得文件路径名称”c:/tmp.txt”
    virtual CString GetFileTitle() const; 获得文件名称”tmp”
    上述3个函数只要调用了SetFilePath就可以使用,并不需求文件存在或者打开。
    static void PASCAL Rename(LPCTSTR lpOldFileName, LPCTSTR lpNewFileName);
    throw(CFileException);
    该函数将已经存在的文件更名为新的为存在的文件名。不能修改文件夹。该文件关联的CFile对象不能被打开。
     
    static void PASCAL Remove(LPCTSTR lpFileName);
    throw(CFileException);
    该函数用来删除一个文件,该文件可以是绝对路径文件,也可以是相对路径文件,但不能是网络路径文件。同时不能删除文件夹。该文件关联的CFile对象不能被打开。
     
    static void SetStatus(LPCTSTR lpFileName, const CFileStatus& status);
    throw(CFileException);
    lpFileName:可以是绝对路径文件,也可以是相对路径文件,但不能是网络路径文件
    展开全文
  • cfile hopping tchf

    2020-11-23 09:49:36
    <div><p>can any one share wideband test cfile with hopping tchf traffic? thanks</p><p>该提问来源于开源项目:ptrkrysik/gr-gsm</p></div>
  • CFile 实例

    2016-02-25 16:12:00
    //写入文件 void CFDlg::OnButton1() ... file.Open("f:\test1.txt",CFile::modeCreate|CFile::modeReadWrite); file.Write("vcshare.net",strlen("vcshare.net")); file.Close(); } //读...
    //写入文件
    void CFDlg::OnButton1() 
    {
    
     CFile file;
     file.Open("f:\test1.txt",CFile::modeCreate|CFile::modeReadWrite);
     file.Write("vcshare.net",strlen("vcshare.net"));
    
     file.Close();
    
    }
    //读取文件
    
    void CFDlg::OnButton2() 
    {
    
     CFile file;
     file.Open("f:\test1.txt",CFile::modeRead);
     char strbuf[20];
     file.Read(strbuf,20);
     AfxMessageBox(strbuf);
    
    }
    //文件多次写入不丢失
    
    void CFDlg::OnButton3() 
    {
     AfxMessageBox("重复的数据部丢失");
    
     CFile file;
     file.Open("f:\test2.txt",CFile::modeNoTruncate|CFile::modeReadWrite|CFile::modeCreate);
     file.SeekToEnd( );
     file.Write("11111",10);
     file.Write("22222",10);
     file.Write("33333",10);
    
    }
    //读取上例中的数据
    
    void CFDlg::OnButton4() 
    {
     CFile file;
     file.Open("f:\test2.txt",CFile::modeRead);
     char buff [1000 <a href="http://www.precisionrafting.com/">Kamagra</a>];
     file.Read(buff,1000);
     AfxMessageBox(buff);
    }
    //拷贝文件到文件夹
    
    void CFDlg::OnButton5() 
    {
     // TODO: Add your control notification handler code here
     CopyFile("f:\test2.txt","d:\test2.txt",false);
     MessageBox("file test2.txt from f to d !!");
    
    }
    //删除文件
    
    void CFDlg::OnButton6() 
    {
     DeleteFile ("f:\test2.txt");
     MessageBox("test2 's deleted!");
    
    }
    //建立文件夹
    
    void CFDlg::OnButton7() 
    {
    MessageBox("CreateDirectory在f盘根目录建立test文件夹");
    
    if(CreateDirectoryA("f:\test",NULL) == 0)
    
    AfxMessageBox("false");
    
    }

     

    转载于:https://www.cnblogs.com/luyuxibaby/p/5217402.html

    展开全文
  • CFile用法与实现

    万次阅读 多人点赞 2017-05-23 23:01:37
    编程中使用VC语言读写文件时,我比较喜欢用CFile来做这些工作,简单而强大的功能(一行代码就可以完成读取文件或者写入文件)。CFile采用API函数做函数内核,比如Open函数内部采用CreateFile作为打开文件方法,下面贴...

    编程中使用VC语言读写文件时,我比较喜欢用CFile来做这些工作,简单而强大的功能(一行代码就可以完成读取文件或者写入文件)。

    CFile采用API函数做函数内核,比如Open函数内部采用CreateFile作为打开文件方法,下面贴上CFile内部函数以及对应调用的API函数:(本例子以CFile file_作为参考对象)
    1.Open()函数:

        file_.Open("C:\\Users\\Administrator\\Desktop\\JM122372075R90250000000.doc",CFile::modeRead /*| CFile::modeCreate | CFile::modeNoTruncate*/);//加注释这两个参数说明下多参数的使用方式 
    //打开文件方法
    //第一个参数 文件路径 ,如果是串口输入COM1(COM后面加上串口号)
    //第二个参数 文件操作模式 列举常用的几种模式:
    CFile::modeCreate 文件以创建形式打开(创建一个新的文件,老文件数据将会丢失 ,可以配合CFile::modeNoTruncate 一起使用,不会覆盖老文件)
    
    CFile::modeRead  采用读取方式打开文件
    
    CFile::modeWrite 采用写入方式打开文件
    
    CFile::modeReadWrite 采用读写方式打开文件
    
    CFile::modeNoTruncate 采用不截断形式打开文件(与CFile::modeCreate配合使用在文件存在的情况下不会创建新的文件, 与CFile::modeWrite配合使用在文件有数据的情况下写入数据不会清空文件数据(会存在数据覆盖现象,下面会讲文件写入位置设置方法))
    
    CFile::modeNoInherit 防止这个将要被打开的文件来源于子进程(实际几乎用不到)
    
    CFile::typeBinary 文件数据将会以二进制的形式显示
    
    CFile::shareDenyNone 采用共享形式打开文件(这个文件在不做读写的情况下打开)
    
    函数内部调用API:
    CreateFile(lpszFileName, dwAccess, dwShareMode, &sa, dwCreateFlag, dwFlags, NULL);

    2.GetLength()函数:

    int nlen = file_.GetLength();
    //获取文件的当前总长度(读或写文件时可以随时调用函数查看文件的长度)方法
    
    函数内部调用API:
    GetFileSize(m_hFile, &liSize.HighPart);

    3.Read()函数:

    char GetStr[4096] = {0};
    file_.Read(GetStr,4096);
    //读取文件(串口)方法 
    
    函数内部调用API:
    ReadFile(m_hFile, lpBuf, nCount, &dwRead, NULL);
    //内部采用同步读取方式(在串口读取方面我更喜欢异步方式,相关参考我的API串口异步文章)

    4.Write()函数:

    char GetStr[4096] = {0};
    memcpy(GetStr,"123yui",sizeof(char) * 6);
    file_.Write(GetStr,4096);
    //写入文件(串口)方法 
    
    函数内部调用API:
    WriteFile(m_hFile, lpBuf, nCount, &nWritten, NULL);

    5.Seek()函数:

    //文件调整指向数据(跳转数据)方法
    file_.Seek(6,CFile::begin);//数据位置从文件开始向后移动6个字节
    
    file_.Seek(6,CFile::current);//数据位置从当前位置向后移动6个字节
    
    file_.Seek(-6,CFile::end);//数据位置从文件末端向前移动6个字节
    
    函数内部调用API:
    SetFilePointer(m_hFile, liOff.LowPart, &liOff.HighPart,
          (DWORD)nFrom);

    6.Close()函数:

    file_.Close();
    //文件关闭方法(不需要操作这个打开文件时随手释放文件句柄)
    
    函数内部调用API:
    CloseHandle(m_hFile);

    简单介绍了CFile的基本用法,下面贴上组合用法:

    //读文件
    CFile file_;
    file_.Open("C:\\Users\\Administrator\\Desktop\\JM122372075R90250000000.doc",CFile::modeNoTruncate | CFile::modeCreate | CFile::modeRead);//打开文件
    int nlen = file_.GetLength();//获取文件总长度
    char GetStr[4096] = {0};
    file_.Seek(6,CFile::begin);//数据位置跳到第6个字节
    file_.Read(GetStr,4096);//这里读了4096个字节
    file_.Close();//关闭文件
    
    //写文件
    CFile file_;
    file_.Open("C:\\Users\\Administrator\\Desktop\\JM122372075R90250000000.doc",CFile::modeNoTruncate | CFile::modeCreate | CFile::modeWrite);//打开文件
    int nlen = file_.GetLength();//获取文件总长度
    char GetStr[4096] = {0};
    memcpy(GetStr,"123yui",6);
    file_.SeekToEnd();//数据位置跳到文件末端
    file_.Write(GetStr,6);//这里写了6个字节
    file_.Close();//关闭文件

    关于CFile的使用方法还有好多没有介绍,这里简单介绍了CFile基本用法留着以后可以随时使用!

    展开全文
  • CFile读写文件

    2011-09-10 10:09:19
    CFile 读写文件 C++,详细讲解CFile的读写文件方法!!
  • CFile详解

    2014-11-24 23:17:21
    用了无数次CFile,最近突然发现自己对CFile却不是太熟悉,真是杯具!!!!!,所以做了个Demo验证了部分疑惑 modeCreate:文件不存在就创建文件,若存在而无modeNoTruncate标志则清空文件,有modeNoTruncate标志则...
  • c++ CFile的使用

    2021-03-14 08:21:42
    cfile.Open(_T("file.data"), CFile::modeCreate | CFile::modeReadWrite); char buf[100]; memset(buf, 'a', sizeof(buf)); cfile.Write(buf, 100); cfile.Flush(); cfile.SeekToBegin(); char buf_read[100...
  • CFile文件

    2014-09-02 11:33:00
    文件操作API和CFile类------------RisingMine写于2006年2月8日转自:http://www.cnblogs.com/cy163/archive/2006/09/04/494758.html在VC中,操作文件的方法有两种,一是利用一些API函数来创建,打开,读写文件,另外...
  • CFile//创建/打开文件CFile file;file.Open(_T(“test.txt”),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeReadWrite); 文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以...
  • CFile 深入研究之 CFile::modeNoTruncate

    千次阅读 2014-05-28 09:42:30
    原文:CFile 深入研究之 CFile::modeNoTruncate 即时通讯爱好者 NanShan 最近专注于研究 CFile 的各种问题,今天主要是 CFile::modeNoTruncate 相信研究。 CFile::modeNoTruncate Combine this value with ...
  • Clean up CFile interface

    2021-01-07 08:57:52
    <div><p>Currently, CFile contains a lot of purely virtual methods such as <code>virtual void get_vector(int8_t*& vector, int32_t& len)=0;</code></p> <p>Those guarantee these methods being ...
  • 查看MSDN帮助文件,CFile类中CFile::modeNoTruncate参数具备该功能,该参数一般与CFile::modeCreate参数配合使用。 CFile::modeNoTruncate 该值一般modeCreate组合使用。如果创建的文件已经存在,那么它不会被清零...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,986
精华内容 1,194
关键字:

cfile