Làm cách nào để nhận tổng số tệp trong một thư mục bằng cách sử dụng thư viện chuẩn C++? Bất kỳ trợ giúp nào được đánh giá cao.Số lượng tệp trong một thư mục bằng cách sử dụng C++
Trả lời
Bạn không thể. Gần nhất bạn sẽ có thể nhận được là sử dụng một cái gì đó như Boost.Filesystem
Sau đó nó tầm thường: 'int count = std :: sự khác biệt (directory_iterator (dir_path), directory_iterator());' – MSalters
@MSalters, tôi không thể tìm thấy bất kỳ tham chiếu đến 'std :: difference'. Bạn có chắc chắn bạn không có nghĩa là 'std :: distance'? Ngoài ra, bạn sẽ cần 'static_cast
Tôi đang cố gắng tránh liên kết tới thư viện Tăng cường và chỉ sử dụng tiêu đề cho thuật toán. – harik
Bạn sẽ cần sử dụng API hoặc khung gốc.
Nếu bạn không loại trừ thư viện chuẩn C luôn có sẵn, bạn có thể sử dụng thư viện đó. Bởi vì nó có sẵn ở khắp mọi nơi anyways, không giống như tăng, nó là một lựa chọn khá có thể sử dụng!
Ví dụ được đưa ra here.
Và ở đây:
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main (void)
{
DIR *dp;
int i;
struct dirent *ep;
dp = opendir ("./");
if (dp != NULL)
{
while (ep = readdir (dp))
i++;
(void) closedir (dp);
}
else
perror ("Couldn't open the directory");
printf("There's %d files in the current directory.\n", i);
return 0;
}
Và đủ chắc chắn
> $ ls -a | wc -l
138
> $ ./count
There's 138 files in the current directory.
Đây không phải là C++ ở tất cả, nhưng nó có sẵn trên hầu hết, nếu không phải tất cả, hệ điều hành, và sẽ làm việc trong C++ bất kể.
CẬP NHẬT: Tôi sẽ sửa lại tuyên bố trước đây của tôi về việc này là một phần của thư viện chuẩn C - không phải. Nhưng bạn có thể mang khái niệm này đến các hệ điều hành khác, bởi vì tất cả chúng đều có cách xử lý các tệp mà không phải lấy ra các thư viện bổ sung.
-1: Thư viện chuẩn C không cung cấp cách nào để liệt kê một thư mục. –
Đó là một cuộc bỏ phiếu ngu xuẩn. Tất nhiên bạn có thể đếm các tập tin bằng cách sử dụng lib chuẩn C.Lấy ví dụ mà tôi đưa vào bài đăng của tôi - thay vì gọi "đặt ..." bên trong khi được sử dụng để lặp qua mọi tệp, chỉ cần thực hiện "i + +" và khai báo "int i" ở đâu đó ở trên. Tất nhiên là không có hàm "directory_get_file_count", nhưng đó không phải là vấn đề. Vấn đề là, bạn có thể sử dụng nó để có được kết quả mong muốn của bạn, cụ thể là số lượng tệp trong một thư mục. Các địa ngục, hãy để tôi chỉnh sửa câu trả lời ban đầu của tôi với một câu trả lời thìa ăn, sec – LukeN
-1, 'readdir' là POSIX không tiêu chuẩn C. – MSalters
Nếu chúng được đặt tên, sắp xếp và có cùng phần mở rộng, bạn có thể chỉ cần đếm chúng với thư viện C++ chuẩn.
Giả sử tên tệp giống như "img_0.jpg..img_10000.jpg..img_n.jpg", Chỉ cần kiểm tra xem chúng có nằm trong thư mục hay không.
int Trainer::fileCounter(string dir, string prefix, string extension)
{
int returnedCount = 0;
int possibleMax = 5000000; //some number you can expect.
for (int istarter = 0; istarter < possibleMax; istarter++){
string fileName = "";
fileName.append(dir);
fileName.append(prefix);
fileName.append(to_string(istarter));
fileName.append(extension);
bool status = FileExistenceCheck(fileName);
returnedCount = istarter;
if (!status)
break;
}
return returnedCount;
}
bool Trainer::FileExistenceCheck(const std::string& name) {
struct stat buffer;
return (stat(name.c_str(), &buffer) == 0);
}
Câu hỏi cũ, nhưng vì nó xuất hiện đầu tiên trên tìm kiếm của Google, tôi nghĩ thêm câu trả lời của mình vì tôi cần một thứ như thế.
int findNumberOfFilesInDirectory(std::string& path)
{
int counter = 0;
WIN32_FIND_DATA ffd;
HANDLE hFind = INVALID_HANDLE_VALUE;
// Start iterating over the files in the path directory.
hFind = ::FindFirstFileA (path.c_str(), &ffd);
if (hFind != INVALID_HANDLE_VALUE)
{
do // Managed to locate and create an handle to that folder.
{
counter++;
} while (::FindNextFile(hFind, &ffd) == TRUE);
::FindClose(hFind);
} else {
printf("Failed to find path: %s", path.c_str());
}
return counter;
}
- 1. Đếm số lượng tệp trong thư mục bằng cách sử dụng C
- 2. Xác định số lượng tệp trong một thư mục
- 3. Đếm số lượng tệp trong một thư mục qua javascript
- 4. Trả lại tổng số tệp trong một thư mục bằng cách sử dụng PHP
- 5. Làm cách nào để đọc số lượng tệp trong một thư mục bằng Python?
- 6. Lặp lại một số lượng lớn các tệp trong một thư mục
- 7. Sao chép tệp từ thư mục này sang thư mục khác bằng cách sử dụng vbscripting
- 8. Mở thư mục bằng cách sử dụng C
- 9. Làm cách nào để tìm tệp trong mỗi thư mục có số lượng tệp cao nhất?
- 10. Trả lại số lượng tệp trong thư mục và thư mục con
- 11. Đổi tên một số tệp trong một thư mục
- 12. Cách tải lên một tệp (sử dụng FTP) vào một thư mục được bảo vệ bằng mật khẩu trong C#?
- 13. Đếm số lượng loại tệp cụ thể của một thư mục và thư mục con của nó trong mac
- 14. Tìm tệp cũ nhất trong một thư mục bằng cách sử dụng PHP
- 15. Tìm tất cả các tệp CSV trong một thư mục bằng cách sử dụng Python
- 16. Liệt kê các tệp trong một thư mục bằng cách sử dụng html
- 17. Xóa thư mục trống bằng cách sử dụng msbuild
- 18. Chạy các tệp trong thư mục theo cách đệ quy bằng cách sử dụng ruby
- 19. Cách nhận số lượng childnode trong tệp XML bằng XQuery
- 20. Cài đặt tệp trong thư mục người dùng AppData bằng cách sử dụng thiết lập inno
- 21. Làm cách nào để lấy số lượng hàng trong tệp Excel bằng thư viện POI?
- 22. Cách đếm số lượng tệp trong thư mục nhóm với gsutil
- 23. Làm cách nào để tăng một tên thư mục bằng cách sử dụng Windows batch?
- 24. Lệnh để nén thư mục bằng cách sử dụng thư mục cụ thể làm gốc
- 25. Lặp qua các tệp trong một thư mục bằng VBA?
- 26. Thoát khỏi thư mục bằng cách sử dụng Git Bash
- 27. Làm cách nào để tự động mở tệp đầu tiên trong một thư mục bằng C++?
- 28. Cách sử dụng thư mục trong Codeigniter?
- 29. Cách đếm tất cả các tệp trong một thư mục, thư mục con của nó và tất cả. Số đếm không được bao gồm số thư mục
- 30. Zip thư mục con bằng cách sử dụng ZipOutputStream
Thao tác thư mục liên quan đến hệ điều hành bạn đang truy cập. Vì vậy, đăng bài với hệ điều hành bạn đang cố gắng, sau đó có lẽ chúng tôi có thể giúp bạn tốt hơn. – Daniel
Mã nền tảng chéo để hoạt động trên cả Windows và Linux. Tôi đang sử dụng mingw, gcc và msvc cùng với thư viện wxWidgets, sử dụng tăng nhưng không liên kết đến thư viện của nó, chỉ bao gồm tiêu đề. chức năng fstat và _stat mà chúng tôi có trong #include. để nhận chi tiết tệp. Chúng tôi có hỗ trợ tương tự để nhận chi tiết thư mục không? –
harik