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();
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();
解决方案 »
- 在截屏录像中,为什么只录了差不多一分钟就自动停止录像截屏了
- (在线等)日文系统下,使用CopyFile拷贝文件的路径问题
- 学linux C++ 还是VC? 路过的指点下小弟
- vc6.0制作的ocx控件在vb中使用的一些怪问题
- 进程与系统服务之间通信的问题
- 如何将bmp图像上的某个区域,相对于原图像作旋转?
- ComboBox 窗口大小如何设置? 使用SendMessage 用哪个常量? 是的,我指的是按下下拉箭头以后,弹出一个窗口显示列表. 那个窗口的大小.
- _ConnectionPtr pConnection;_RecordsetPtr m_pRecordset;所对应的open Execuate有什么不同
- 应用程序调用一个已为另一线程整理的界面??什么意思?
- winsock2 sdk 包可以在哪里下载?
- 急:关于socket接收速度问题
- 有没有从已知句柄得出句柄所代表资源的信息的方法?
=>
CFile::modeRead|CFile::typeText;//||=>|,是位或,不是逻辑或,不可以即是文本文件又是二进制文件CFile::modeWrite||CFile::modeCreate
=>
CFile::modeWrite|CFile::modeCreate
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();
file1.Open(FilePathName,CFile::modeRead||CFile::typeBinary);
还没改啊.是位或!
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);
提示还是对文件的访问被拒绝。
怎么解决
||返回一个0或1的值,是一个逻辑运算。
改成CFile::modeRead|CFile::typeBinary试试
这样是一个位运算
==========>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);
提示还是对文件的访问被拒绝。
怎么解决
...
file2.Write(buffer,file1.GetLength());你已经file1.Close()了,但后面又用到file1.GetLength(),可能不妥吧!
应该把file1.Close()放在后面!