티스토리 뷰

Resources에 추가한 파일 사용하기

일반파일

Byte[] file = Properties.Resources.리소스이름;

추가된 파일 리소스는 Byte Array로 취급됩니다.


txt 파일

String str = Properties.Resources.리소스이름;

txt파일인 경우에는 바로 String형으로 읽어들일 수 있습니다.


 URL로 부터 파일 받아오기

c#은 Java에 비해서 URL로 부터 파일을 받아올 수 있는 굉장히 간편한 메소드가 마련되어 있더군요

var webClient = new WebClient();

byte[] Bytes = webClient.DownloadData(URL);

하지만 간단하 사용할 수 있는 만큼 예외처리를 잘해서 사용해야 합니다. URL로부터 파일을 다운로드 받을 수 없으면 오류를 출력하며 프로그램이 멈춰버리는 경우가 발생합니다.


 디렉토리, 파일 유무 확인후 생성하기

 디렉토리

DirectoryInfo di = new DirectoryInfo(path);

if (di.Exists == false) di.Create();


 파일

FileInfo fin = new FileInfo(path);

if (fin.Exists == false) fin.Create();


 파일 쓰기

FileStream s = new FileStream(path, FileMode.Open, FileAccess.Write);

s.Write(ByteArray, 0, ByteArray.Length);

s.Close();

파일을 다루는 작업이 끝나셨다면 반드시 FileStream을 닫는것을 권장해 드립니다.

그리고 만약 다른 프로세스가 해당 파일을 사용중이면 오류가 발생하니 예외처리가 필요합니다.


 다른폼 호출하기

해당 포스팅의 전체적인 주제랑은 다르지만 이왕 오랜만에 c#강좌를 쓴 김에 하나만 더 쓰려고 합니다.

이미 돌아가고 있는 폼에서 다른 폼을 호출하고 해당 폼을 종료하는 방법은 여러가지가 있지만, 저는 아래와 같은 방법을 사용합니다.

1
2
3
4
5
6
7
8
var th = new Thread(() => {
    runForm2();
});
th.SetApartmentState(ApartmentState.STA);
th.Start();
this.Invoke((MethodInvoker)delegate {
    this.Close();
});
cs


 ApartmentState

위의 코드에서 쓰레드를 호출할때 ApartmentState를 설정하는 이유는 만약 ApartmentState를 따로 설정해 주지 않으면 WebView를 생성할때 런타임 오류가 발생하더라구요


그래서 ApartmentState란 뭐냐?

ApartmentState는 STA와 MTA가 있는데, STA는 Single Threaded Apartment, 하나의 쓰레드가 아파트를 소유하는 구조를 가집니다. 즉, 멀티 쓰레드를 제공할 수 없는 구조로 되어 있고 MTA는 Multi Threaded Apartment로 각각의 쓰레드가 독립된 방을 갖는 것이 허용되는. 즉, 멀티 쓰레드를 제공하기에 적합한 구조라고 할 수 있습니다.


제가 ApartmentState를 STA로 설정한 이유는 C# 윈폼이 처음 실행될 때 main메소드를 보면 위에 [STAThread]라고 써져있는게 있습니다. 이게 ApartmentState를 설정하는 것 인데, 그냥 main메소드에서 STA라고 설정하여 Form1이 동작중이니 Form2에도 같은 환경의 쓰레드를 제공하기위해 STA로 지정하였습니다.


C# WinForm은 Java의 Swing이나 AWT보다더 번거롭거나 어려운 점이 많은 것 같네요..


'tmp' 카테고리의 다른 글

Git flow 사용해보기  (3) 2017.02.08
Java Database 접속 - 자주쓰는 코드  (0) 2016.07.24
c#마스터 - #5형변환  (0) 2015.09.14
c#마스터 - #4Object 형식과 박싱,언박싱  (0) 2015.09.14
C# 강좌 - 세번째 : 데이터 타입  (1) 2015.09.14
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함