Skip to content

Commit e56fb0c

Browse files
committed
v0.2
코드 최적화, 경로 읽어올 때 자동 정렬 추가 (Natural Sort)
1 parent 7172e3c commit e56fb0c

File tree

7 files changed

+558
-100
lines changed

7 files changed

+558
-100
lines changed

FileManager.cpp

Lines changed: 61 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include "FileManager.h"
33
#include <filesystem>
44
#include <string>
5+
#include "NatSort.hpp"
56

67

78
namespace fs = std::filesystem;
@@ -35,96 +36,87 @@ FileManager::FileManager(string path)
3536
file_count = file_list.size();
3637
dir_count = dir_list.size();
3738
all_count = file_count + dir_count;
38-
}
39-
40-
int FileManager::get_file_count() const { return file_count; }
41-
42-
int FileManager::get_dir_count() const { return dir_count; }
4339

44-
int FileManager::get_all_count() const { return all_count; }
45-
46-
//파일만 출력
47-
void FileManager::print_file_list()
48-
{
49-
for (string& element : file_list) {
50-
cout << element << endl;
51-
}
40+
//Natural Sort 알고리즘으로 친절하게 정렬도 수행 (Option)
41+
SI::natural::sort(file_list);
42+
SI::natural::sort(dir_list);
5243
}
5344

54-
//디렉토리만 출력
55-
void FileManager::print_dir_list()
45+
int FileManager::get_count(FileType ft) const
5646
{
57-
for (string& element : dir_list) {
58-
cout << element << endl;
47+
if (ft == FileType::File) {
48+
return file_count;
49+
}
50+
else if (ft == FileType::Directory) {
51+
return dir_count;
52+
}
53+
else if (ft == FileType::All) {
54+
return all_count;
5955
}
6056
}
6157

62-
//전부 출력
63-
void FileManager::print_all_list()
64-
{
65-
print_file_list();
66-
print_dir_list();
67-
}
68-
69-
//-------------------------------------------
70-
//
71-
//파일 이름 치환
72-
void FileManager::replace_file_name(string& find, string& replace)
73-
{
74-
replace_name(file_list, find, replace);
75-
}
76-
77-
78-
//파일 이름 오른쪽에 문자열 삽입
79-
void FileManager::insert_right_file_name(string& insert_str)
80-
{
81-
insert_right_name(file_list, insert_str);
82-
}
83-
84-
//파일 이름 왼쪽에 문자열 삽입
85-
void FileManager::insert_left_file_name(string& insert_str)
86-
{
87-
insert_left_name(file_list, insert_str);
88-
}
89-
90-
//-------------------------------------------
9158

92-
void FileManager::replace_dir_name(string& find, string& replace)
59+
void FileManager::print_list(FileType ft)
9360
{
94-
replace_name(dir_list, find, replace);
95-
}
96-
97-
void FileManager::insert_left_dir_name(string& insert_str)
98-
{
99-
insert_left_name(dir_list, insert_str);
100-
}
61+
if (ft == FileType::File) {
62+
for (string& element : file_list)
63+
cout << element << endl;
64+
}
65+
else if (ft == FileType::Directory) {
66+
for (string& element : dir_list)
67+
cout << element << endl;
68+
}
69+
else if (ft == FileType::All) {
70+
for (string& element : file_list)
71+
cout << element << endl;
10172

102-
void FileManager::insert_right_dir_name(string& insert_str)
103-
{
104-
insert_right_name(dir_list, insert_str);
73+
for (string& element : dir_list)
74+
cout << element << endl;
75+
}
10576
}
10677

107-
//-------------------------------------------
108-
109-
void FileManager::replace_all_name(string& find, string& replace)
78+
void FileManager::replace_name(FileType ft, string& find, string& replace)
11079
{
111-
replace_name(file_list, find, replace);
112-
replace_name(dir_list, find, replace);
80+
if (ft == FileType::File) {
81+
replace_name(file_list, find, replace);
82+
}
83+
else if (ft == FileType::Directory) {
84+
replace_name(dir_list, find, replace);
85+
}
86+
else if (ft == FileType::All) {
87+
replace_name(file_list, find, replace);
88+
replace_name(dir_list, find, replace);
89+
}
11390
}
11491

115-
void FileManager::insert_left_all_name(string& insert_str)
92+
void FileManager::insert_left_name(FileType ft, string& insert_str)
11693
{
117-
insert_left_name(file_list, insert_str);
118-
insert_left_name(dir_list, insert_str);
94+
if (ft == FileType::File) {
95+
insert_left_name(file_list, insert_str);
96+
}
97+
else if (ft == FileType::Directory) {
98+
insert_left_name(dir_list, insert_str);
99+
}
100+
else if (ft == FileType::All) {
101+
insert_left_name(file_list, insert_str);
102+
insert_left_name(dir_list, insert_str);
103+
}
119104
}
120105

121-
void FileManager::insert_right_all_name(string& insert_str)
106+
void FileManager::insert_right_name(FileType ft, string& insert_str)
122107
{
123-
insert_right_name(file_list, insert_str);
124-
insert_right_name(dir_list, insert_str);
108+
if (ft == FileType::File) {
109+
insert_right_name(file_list, insert_str);
110+
}
111+
else if (ft == FileType::Directory) {
112+
insert_right_name(dir_list, insert_str);
113+
}
114+
else if (ft == FileType::All) {
115+
insert_right_name(file_list, insert_str);
116+
insert_right_name(dir_list, insert_str);
117+
}
125118
}
126119

127-
//-------------------------------------------
128120

129121

130122

FileManager.h

Lines changed: 9 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ using std::endl;
99
using std::string;
1010
using std::cin;
1111

12+
//모드 지정용 FileType
13+
enum class FileType {
14+
File, Directory, All
15+
};
1216

1317
class FileManager {
1418
public:
@@ -18,30 +22,13 @@ class FileManager {
1822
FileManager(string dir_path); //생성자
1923

2024
//Getter()
21-
int get_file_count() const;
22-
int get_dir_count() const;
23-
int get_all_count() const;
25+
int get_count(FileType ft) const;
2426

2527
//print
26-
void print_file_list();
27-
void print_dir_list();
28-
void print_all_list();
29-
30-
//replace (오직 파일만)
31-
void replace_file_name(string& find, string& replace);
32-
void insert_left_file_name(string& insert_str);
33-
void insert_right_file_name(string& insert_str);
34-
35-
//디렉토리만
36-
void replace_dir_name(string& find, string& replace);
37-
void insert_left_dir_name(string& insert_str);
38-
void insert_right_dir_name(string& insert_str);
39-
40-
//전부
41-
void replace_all_name(string& find, string& replace);
42-
void insert_left_all_name(string& insert_str);
43-
void insert_right_all_name(string& insert_str);
44-
28+
void print_list(FileType ft);
29+
void replace_name(FileType ft, string& find, string& replace); //오버로딩
30+
void insert_left_name(FileType ft, string& insert_str); //오버로딩
31+
void insert_right_name(FileType ft, string& insert_str); //오버로딩
4532

4633
private:
4734
//Encapsulation

0 commit comments

Comments
 (0)