Solved

Searching the directory for a unique extension?

Posted on 2007-04-04
6
231 Views
Last Modified: 2010-04-01
I have a program that creates a flat file that uses the current date/time to name the file.  This will be the only file in the folder with a ".651" extension.  I have another program that needs to pick-up this file.  Since, I can't use the file's name, is there any code that will allow me to seach the folder for that extension and open the file?

Below is an an example of the address.
Y:\\INCOMING\\OSS\\20070404131022.651
0
Comment
Question by:jgoss1
6 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 75 total points
ID: 18852915
Check out http://msdn2.microsoft.com/en-us/library/aa365200.aspx ("Listing the Files in a Directory") which will show you how to do that. Basically, in

   // Find the first file in the directory.
   hFind = FindFirstFile(DirSpec, &FindFileData);


you need to pass "Y:\\INCOMING\\OSS\\*.651" as 'DirSpec'
0
 
LVL 6

Assisted Solution

by:bijopuli
bijopuli earned 25 total points
ID: 18852986
     try
      {
                    WIN32_FIND_DATA FindFileData;
                    HANDLE hFind;

                    printf ("Target file is %s.\n", argv[1]);

                    hFind = FindFirstFile("Y:\\INCOMING\\OSS\\*.651", &FindFileData);

                    if (hFind == INVALID_HANDLE_VALUE)
                    {
                        printf ("Invalid File Handle. Get Last Error reports %d\n", GetLastError ());
                    } else
                    {
                        printf ("The first file found is %s\n", FindFileData.cFileName);
                        FindClose(hFind);
                    }

      }
      catch(...)
      {
            LPVOID lpMsgBuf;
            FormatMessage(       FORMAT_MESSAGE_ALLOCATE_BUFFER |
                                    FORMAT_MESSAGE_FROM_SYSTEM |
                                    FORMAT_MESSAGE_IGNORE_INSERTS,
                                    NULL,
                                    GetLastError(),
                                    MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                                    (LPTSTR) &lpMsgBuf,
                                    0,
                                    NULL
                              );

            // Display the string.
            cout<<((LPCTSTR)lpMsgBuf)<<endl;;
            //TRACE0((LPCTSTR)lpMsgBuf);

            // Free the buffer.
            LocalFree( lpMsgBuf );
      }
0
 
LVL 86

Expert Comment

by:jkr
ID: 18853441
And how is that different to what I suggested?
0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 
LVL 11

Assisted Solution

by:DeepuAbrahamK
DeepuAbrahamK earned 25 total points
ID: 18853576
Using MFC:

{
 CFileFind objFlagFinder;
 char szFolderNameAbs[MAX_PATH];
 strcpy(szFolderNameAbs,"Y:\\INCOMING\\OSS\\*.651"); //Set the search path
 //Searching flag file
 bool bFlg = objFlagFinder.FindFile(szFolderNameAbs);
 if(!bFlg)
 {
    bFlg = objFlagFinder.FindFile(szFolderNameAbs);
    if(!bFlg) //No file found
       return;      
   //TO DO:
 }
 while (bFlg) //If you want to Search further
 {      
 bFlg = objFlagFinder.FindNextFile();
 //TO DO :
 }
}

Best Regards,
DeepuAbrahamK
0
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 18853598
What JKR suggested is right.These are the alternate ways of implementation.
0
 

Author Comment

by:jgoss1
ID: 18853676
jkr,
Thank you for the solution help and the information on where to find it in MSDN.  I got the program to find the file.  Thanks!

DeepuAbrahamK and bijulpoli,
The examples help me understand how jkr's solution worked.  Thanks for the back-up support.

I might actually get this program finished by my deadline...well... maybe.  ;)

 
0

Featured Post

Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
Introduction This article is a continuation of the C/C++ Visual Studio Express debugger series. Part 1 provided a quick start guide in using the debugger. Part 2 focused on additional topics in breakpoints. As your assignments become a little more …
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question