С плюсами только знакомлюсь. Пытаюсь получить список файлов и папок в директори и для файлов размер. Код:
#include "stdafx.h"
#include <string>
#include <iostream>
#include <filesystem>
namespace fs = std::experimental::filesystem;
int main()
{
std::string path = "C:\\";
for (auto & p : fs::directory_iterator(path))
{
std::cout << p << std::endl;
const fs::v1::path target(p);
//bool x = fs::is_directory(target);
if (!fs::is_directory(target))
{
try {
std::cout << fs::file_size(target) << std::endl;
}
catch (fs::filesystem_error const & e)
{
std::cout << "Error: " << e.what() << '\n';
}
}
}
system("PAUSE");
}
Результат:
C:\$GetCurrent
C:\$Recycle.Bin
C:\Config.Msi
C:\hiberfil.sys
Error: file_size(p): invalid argument: operation not permitted
C:\HP
C:\inetpub
C:\Intel
C:\My
C:\pagefile.sys
Error: file_size(p): invalid argument: operation not permitted
C:\PerfLogs
C:\Program Files
C:\Program Files (x86)
C:\ProgramData
C:\Recovery
C:\swapfile.sys
Error: file_size(p): invalid argument: operation not permitted
C:\SWsetup
C:\System Volume Information
C:\system.sav
C:\test
C:\Tool
C:\Users
C:\Windows
C:\Windows.old
C:\Windows10Upgrade
fs::file_size(p)
дает такой же результат.
Как правильно получить размер файла?
Размер доступен прямо в directory_entry
(код для VS2017, стандарт c++17):
#include <filesystem>
#include <iostream>
#include <string>
int main()
{
::std::string path{"C:\\"};
for(auto & p : ::std::filesystem::directory_iterator{path})
{
::std::cout << p.path() << ::std::endl;
if(not p.is_directory())
{
::std::cout << p.file_size() << ::std::endl;
}
}
system("PAUSE");
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как мне сделать такие волныТам вся сложность в перекрытии цветов
У меня есть элемент на странице