vc++.net中的程序实现读一个文件提示对文件的访问被拒绝,文件本身的属性不是只读的,怎么解决?
void CzDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
      CString  FilePathName;
      CFileDialog dlg(TRUE,NULL,NULL,0,"文本文件(*.txt||*.txt||");               if(dlg.DoModal()==IDOK)
          FilePathName=dlg.GetPathName();   
     char buffer[1025];
     CFile file1;
     file1.Open(FilePathName,CFile::modeRead||CFile::typeText||CFile::typeBinary);
     file1.Read(buffer,file1.GetLength());
     file1.Close();
     
     CFile file2;
     file2.Open("E:\\456.txt",CFile::modeWrite||CFile::modeCreate);
     file2.Write(buffer,file1.GetLength());
     file2.Flush(); 
     file2.Close();

解决方案 »

  1.   

    CFile::modeRead||CFile::typeText||CFile::typeBinary
    =>
    CFile::modeRead|CFile::typeText;//||=>|,是位或,不是逻辑或,不可以即是文本文件又是二进制文件CFile::modeWrite||CFile::modeCreate
    =>
    CFile::modeWrite|CFile::modeCreate
      

  2.   

    我改成了这样,还是提示对文件的访问被拒绝,
    CString  FilePathName;
          CFileDialog dlg(TRUE,NULL,NULL,0,"文本文件(*.txt)|*.txt||");
          if(dlg.DoModal()==IDOK)
          FilePathName=dlg.GetPathName(); char buffer[1025];
             CFile file1;
    file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
             file1.Read(buffer,file1.GetLength());
             file1.Close();

             CFile file2;
    file2.Open("E:\\456.txt",CFile::modeWrite|CFile::modeCreate);
             file2.Write(buffer,file1.GetLength());
    file2.Flush(); 
             file2.Close();
      

  3.   

    CFile file1;
    file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
    还没改啊.是位或!
      

  4.   

    CFile file1;
    file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
    这样不行吗?只是以二进制打开文件,没有加其他格式。我改成
        CFile file1;
    file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
    提示没有找到一个未明名的文件改成CFile file1;
    file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
    提示还是对文件的访问被拒绝。
    怎么解决
      

  5.   

    CFile::modeRead||CFile::typeBinary
    ||返回一个0或1的值,是一个逻辑运算。
    改成CFile::modeRead|CFile::typeBinary试试
    这样是一个位运算
      

  6.   

    file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
    ==========>file1.Open(FilePathName,CFile::modeRead|CFile::typeBinary);
      

  7.   

    我改成
        CFile file1;
    file1.Open(FilePathName,CFile::modeRead|CFile::typeBinary);
    提示没有找到一个未明名的文件改成CFile file1;
    file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
    提示还是对文件的访问被拒绝。
    怎么解决
      

  8.   

    file1.Close();
    ...
    file2.Write(buffer,file1.GetLength());你已经file1.Close()了,但后面又用到file1.GetLength(),可能不妥吧!
    应该把file1.Close()放在后面!