Skip to content

6. 파일 시스템


1. 파일 한 글자씩 읽기

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    ifstream read;

    read.open("example.txt", ifstream::in);
    char line = read.get();

    while (read.eof() == false) {
        cout << line;
        line = read.get();
    }

    cout << endl;
    read.close();

    return 0;
}
C++ 프로그래밍


2. 파일 한 줄씩 읽기

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main() {
    ifstream file;
    string line;

    file.open("example.txt", ifstream::in);

    while (getline(file, line))
        cout << line << endl;

    file.close();

    return 0;
}
C++ 프로그래밍


3. 파일 전체 읽기

#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main() {
    ifstream ifs("example.txt");
    stringstream ss;
    string read = "";

    ss << ifs.rdbuf();
    ifs.close();

    cout << "== !ss.eof() ==" << endl;
    while (!ss.eof()) {
        ss >> read;
        cout << read << " ";
    }
    cout << endl;

    cout << "== !ss.str() ==" << endl;
    read = ss.str();
    cout << read << endl;

    return 0;
}
== !ss.eof() ==
C++ 프로그래밍
== !ss.str() ==
C++ 프로그래밍


4. 텍스트 파일 쓰기

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

int main() {
    const string file_name = "example.txt";
    ofstream file_out;
    ifstream file_in;
    string line;

    file_out.open(file_name, ifstream::out);
    file_out << "C++ 프로그래밍" << endl;
    file_out.close();

    file_in.open(file_name, ifstream::in);
    while (getline(file_in, line))
        cout << line << endl;
    file_in.close();

    return 0;
}
C++ 프로그래밍


5. 실행 폴더 확인

#include <filesystem>
#include <iostream>
using namespace std;
namespace fs = filesystem;

int main() {
    cout << "프로젝트 폴더: "
         << fs::current_path() << endl;

    return 0;
}
프로젝트 폴더: "/Users/SAEMC/Github/C_CPP"


6. 폴더 존재 여부 확인

#include <filesystem>
#include <iostream>
using namespace std;
namespace fs = filesystem;

int main() {
    if (fs::exists("/Users/SAEMC/") == true)
        cout << "폴더가 존재합니다." << endl;
    else
        cout << "폴더가 없습니다." << endl;

    return 0;
}
폴더가 존재합니다.


7. 하위 폴더 목록 확인

#include <filesystem>
#include <iostream>
#include <string>
using namespace std;
namespace fs = filesystem;

int main() {
    string directory = "/Users/SAEMC/Github/";

    for (auto &name : fs::directory_iterator(directory))
        cout << name.path().string() << endl;

    return 0;
}
/Users/SAEMC/Github/Flask
/Users/SAEMC/Github/Language_Detector
/Users/SAEMC/Github/BEP
/Users/SAEMC/Github/Java
/Users/SAEMC/Github/SRT
/Users/SAEMC/Github/Works
/Users/SAEMC/Github/FastAPI
/Users/SAEMC/Github/Access_Token_Manager
/Users/SAEMC/Github/.vscode
/Users/SAEMC/Github/Api_Crawler
/Users/SAEMC/Github/C_CPP


8. 폴더 생성/복사/삭제

#include <filesystem>
#include <iostream>
using namespace std;
namespace fs = filesystem;

int main() {
    fs::create_directory("temp");
    fs::copy("temp", "temp_copy");
    fs::remove("temp");
    fs::remove("temp_copy");

    return 0;
}


9. 파일 복사와 삭제

#include <filesystem>
#include <iostream>
using namespace std;
namespace fs = filesystem;

int main() {
    fs::copy("example.txt", "(복사)example.txt");
    fs::remove("(복사)example.txt");

    return 0;
}


10. 파일 존재 여부 확인

#include <fstream>
#include <iostream>
using namespace std;

int main() {
    ifstream stream;
    stream.open("example.txt");

    if (stream.good() == true)
        cout << "파일이 존재합니다." << endl;
    else
        cout << "파일이 없습니다." << endl;

    stream.close();

    return 0;
}
파일이 존재합니다.


11. 파일 크기 확인

#include <filesystem>
#include <iostream>
using namespace std;
namespace fs = filesystem;

int main() {
    int size = fs::file_size("example.txt");

    cout << "파일 크기: " << size << "바이트" << endl;

    return 0;
}
파일 크기: 20바이트