파일다루기

sz L·2023년 4월 13일
0

씨샵

목록 보기
14/17
post-thumbnail
post-custom-banner

파일 확인하기

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs29_filehandling
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Directory == Folder
            // @"C:\\Dev" 리터럴은 여러줄도 가능
            string curDirectory = @"C:\DEV\Langs\Python311";   //C:\Dev는 절대경로  /  .은 현재 디렉토리(상대경로) / ..은 상위폴더

            Console.WriteLine("현재 디렉토리 정보");

            var dirs = Directory.GetDirectories(curDirectory);
            foreach (var dir in dirs)
            {
                var dirInfo = new FileInfo(dir);

                Console.Write(dirInfo.Name);
                Console.WriteLine(" [{0}]",dirInfo.Attributes);
            }

            Console.WriteLine("\n현재 디렉토리 파일정보");

            var files = Directory.GetFiles(curDirectory);
            foreach(var file in files)
            {
                var fileInfo = new FileInfo(file);

                Console.Write(fileInfo.Name);
                Console.WriteLine(" [{0}]", fileInfo.Attributes);
            }
        }
    }
}



파일 추가하기

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Remoting.Metadata.W3cXsd2001;
using System.Text;
using System.Threading.Tasks;

namespace cs29_filehandling
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Directory == Folder
            // @"C:\\Dev" 리터럴은 여러줄도 가능
            string curDirectory = @"C:\Temp";   //C:\Dev는 절대경로  /  .은 현재 디렉토리(상대경로) / ..은 상위폴더

            Console.WriteLine("현재 디렉토리 정보");

            var dirs = Directory.GetDirectories(curDirectory);
            foreach (var dir in dirs)
            {
                var dirInfo = new FileInfo(dir);

                Console.Write(dirInfo.Name);
                Console.WriteLine(" [{0}]",dirInfo.Attributes);
            }

            Console.WriteLine("\n현재 디렉토리 파일정보");

            var files = Directory.GetFiles(curDirectory);
            foreach(var file in files)
            {
                var fileInfo = new FileInfo(file);

                Console.Write(fileInfo.Name);
                Console.WriteLine(" [{0}]", fileInfo.Attributes);
            }

            //특정 경로에 하위폴더 / 하위파일 조회
            string path = @"C:\Temp\CShap_Bank"; // 만들고자 하는 폴더
            string sfile = "Test.log";           // 생성할 파일

            if (Directory.Exists(path))
            {
                Console.WriteLine("경로가 존재하여 파일을 생성합니다.");
                File.Create(path + @"\" + sfile);   // C:\Temp\CShap_Bank\Test.log
            }
            else
            {
                Console.WriteLine($"해당경로가 없습니다 {path}");
                Directory.CreateDirectory(path);    // 디렉토리 만들기
                Console.WriteLine("경로가 생성하여 파일을 생성합니다.");
                File.Create(path + @"\" + sfile);   // C:\Temp\CShap_Bank\Test.log
            }
        }
    }
}

  • 실행 전
  • 실행 후

파일을 읽고 쓰기 위해 알아야 할 것들

  • 스트림
    • 데이터가 흐르는 통로
    • 순차 접근 방식
      • 네트워크, 데이터 백업 장치
    • 임의 접근 방식
      • 하드 디스크
  • System.IO.Stream 클래스
    • 입력 스트림/출력 스트림의 역할, 순차/임의 접근 방식 모두 지원
    • 파생된 클래스 이용

파일 읽기

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs30_filereadwrite
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string line = string.Empty; // 텍스트를 읽어와서 출력
            StreamReader reader = null;
            try
            {
                reader = new StreamReader(@".\python.py"); //스트림리더 파일 연결

                line = reader.ReadLine();

                while(line != null)
                {
                    Console.WriteLine(line);        // 한 줄 읽은것 출력

                    line = reader.ReadLine();       // 다음 줄 읽음
                }
            }
            catch (Exception e)
            {
                Console.WriteLine($"예외 {e.Message}");
            }
            finally
            {
                reader.Close();     // 파일 읽으면 무조건 마지막에
            }
        }
    }
}




파일 쓰기

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs30_filereadwrite
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 쓰기
            StreamWriter writer = new StreamWriter(@".\pythonByCshap.py");

            try
            {
                writer.WriteLine("import.sys;");
                writer.WriteLine("");
                writer.WriteLine("print(sys.executable)");
            }
            catch (Exception e)
            {
                Console.WriteLine($"예외! {e.Message}");
            }
            finally
            {
                writer.Close();
            }
            Console.WriteLine("파일생성 완료");
        }
    }
}



profile
가랑비는 맞는다 하지만 폭풍은 내 것이야
post-custom-banner

0개의 댓글