在Visual C ++中列出目录中的文件

时间:2017-07-06 13:46:30

标签: visual-c++ directory-listing

我试图“简化”一段很好的示例代码,代码的超链接在此消息的末尾,指定目录字符串而不是将其作为命令行参数传递。简化的代码编译和执行,但文件名和大小不是我所期望的:文件名似乎是十六进制数,nFileSize.High大于nFileSize.Low(实际文件大小范围从0到100Mb) )。我认为我的类型转换可能引入了错误。有什么建议?

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include <bitset>
#include <sstream>
#include <windows.h>
#include <tchar.h> 
#include <stdio.h>
#include <strsafe.h>
#pragma comment(lib, "User32.lib")
using namespace std; 
using namespace System;  //set common language runtime support to /clr

int main()
{
   WIN32_FIND_DATA ffd;
   LARGE_INTEGER filesize;
   //TCHAR szDir[MAX_PATH];
   //size_t length_of_arg;
   HANDLE hFind = INVALID_HANDLE_VALUE;
   //DWORD dwError=0;

    finstr = "C:\\Users\\MyName\\Documents\\Visual Studio 2010\\Projects\\Data Analysis\\Data Folder\\*";

   //Just evaluate the first file before looping over all files
   hFind = FindFirstFile((wchar_t*)(finstr.c_str()), &ffd);

   wstring wsfname(ffd.cFileName);
   string newtemp(wsfname.begin(), wsfname.end());
   cout << "1st fname = " << ffd.cFileName << "   newtemp = "<< newtemp << "   nFSizeLo = "<< ffd.nFileSizeLow << "   nFSizeHi = "<< ffd.nFileSizeHigh << "\n";

   FindClose(hFind);
   return 0;
}

链接到Microsoft的原始示例

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(d=printer,v=vs.85).aspx

0 个答案:

没有答案