Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > ofstream problem opening file

Thread Tools

ofstream problem opening file

Posts: n/a

I have build a program that can do file transferring between a Windows
XP computer and a DOS computer via a serial port. The Windows program
I have build in C++ with Visual Studio 6.0. The DOS program I made in
Turbo C++ 3.0.

At this moment I am in a test phase of sending files and directories.
The code I am using in DOS to open a file for writing looks like this
(forgive me the typos, since I only have my source code at work and
don't have any compiler on this PC):

if (!IsDirectory()) // Check to see if the object is a directory

m_pOfstream = new ofstream;
m_pOfstream->open(l_Filename, ios::binary | ios::in);
if (m_pOfstream->good() == 0)
printf("State: %d\n", m_pOfstream->rdstate());
return FALSE;
return TRUE;

At the moment I am having a strange problem saving files to disk. If
no files exist yet, then everything works fine. But when the files do
exist, and the program actually has to remove them first, then I am
getting errors.

Let's say I send the following files and directories:

The first directory is skipped for removing. The opening of the
directory also returns FALSE, but this is no problem, since I don't
have to write any data to a directory name.
The first file (a.bat) gives an unexplainable error on opening the
file! rdstate() returns 4, which means something like an I/O failure I
The strange thing is, that the rest of the files don't give any
problem at all.

If I remove the file a.bat on the target side by hand, then everything
works fine.

The opening of the file and assigning a valid value to the m_pOfstream
pointer are done through the constructorof some CFile class I made,
while the closing and deleting of the pointer are done in the

Does anyone have any suggestions how to solve this problem?

Alfons van Zwol
Reply With Quote
Posts: n/a
I see as obvious difficulty that you open an ofstream for input.
Also you do not check for errors, changing to code like below works for
me at least on windows, if you run this on a pure DOS box you will get
failures. BTW: this is a bit off topic as it is not strict C++ but OS
specific, but hey it is sunday night, so I hope the police is a bit
relaxed too....
-#include <cstdlib>
-#include <string>
-#include <windows.h>
-#include <fstream>
-#include <iostream>
-#include <stdio.h>-

-using namespace std;
-bool isDirectory(const string& path)
- DWORD dw = GetFileAttributes(path.c_str());
- return ( dw != 0xffffffff && dw & FILE_ATTRIBUTE_DIRECTORY);

-int main(int argc, char *argv[])
- string l_Filename = "C:\\TEMP\\test.txt";
- cout << isDirectory(l_Filename) << false << endl;
- cout << isDirectory("C:\\TEMP") << true <<endl;
- if (!isDirectory(l_Filename)) // Check to see if the object is a
- {
- if(remove(l_Filename.c_str()) == -1)
- {
- cerr << "Error deleteting file " << l_Filename << endl;
- }
- }
- ofstream m_pOfstream;
-, ios:ut);
- if (m_pOfstream.good())
- {
- cout << "TRUE" << endl;
- }
- else
- {
- cout << "State: " << m_pOfstream.rdstate() << endl;
- cout << "FALSE" << endl;
- }
- m_pOfstream.close();
- system("PAUSE");
- return EXIT_SUCCESS;

Reply With Quote

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
strange problem opening ofstream C++ 6 02-12-2008 09:06 AM
ofstream * vs. ofstream Squid Seven C++ 5 07-14-2005 07:34 AM
Word file not opening from Adm -My recent docs but opening from file menu of Word Thaqalain Computer Support 0 06-30-2005 02:20 AM
ofstream file error checks? steve C++ 2 08-20-2003 12:28 AM
File cannot open with ofstream constructor ! tornado C++ 1 07-29-2003 04:38 PM