C# - File
클래스 단위로 파일에 쓰기
이 직렬화 방식은 꼭 .NET 플랫폼에서 서로 파일을 읽고 쓸 때만 사용 가능하다.만약 .NET으로 만든 프로그램에서 아래와 같이 파일을 만들고 이것을 네이티브에서 읽으면 앞에 다른 값이 들어가 있다( 정확하게는 직렬화 되는 클래스의 메타 정보가 들어가 있다 ).
FileStream GloveFile = new FileStream( "0.ipt", FileMode.Create);
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize( GloveFile, ItemFileclass );
##읽기 전용 파일을 해제 하기
System.IO.File.SetAttributes("파일 이름", System.IO.FileAttributes.Normal);
현재 실행 하고 있는 프로그램의 실행 경로 얻기
Environment.CurrentDirectory 를 이용하면 실행 경로를 얻을 수 있다.
응용 프로그램의 현재 작업 디렉토리 얻기
string CurDir = System.IO.Directory.GetCurrentDirectory();
응용 프로그램의 현재 작업 디렉토리 변경하기
System.IO.Directory.SetCurrentDirectory(@"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE");
디렉토리 삭제
System.IO.Directory.Delete(@"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE");
//만약 디렉토리 안의 파일이나 디렉토리까지 지우고 싶다면
System.IO.Directory.Delete(@"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE", true);
하위 폴더에 있는 파일까지 검색
Directory.GetCurrentDirectory();
string[] FindFiles = Directory.GetFiles(textBox6.Text, textBox1.Text, SearchOption.AllDirectories);
파일 삭제
File.Delete(findfile);
폴더 선택 - 컨트롤 사용
public void ChooseFolder()
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
textBox1.Text = folderBrowserDialog1.SelectedPath;
}
}
텍스트 파일 한줄 단위로 읽기
string readfile = "config.txt";
if (false == File.Exists(readfile))
{
MessageBox.Show(readfile + "파일이 없습니다 !!!");
return;
}
string readLine;
StreamReader sr = new StreamReader(readfile);
while (sr.Peek() >= 0)
{
readLine = sr.ReadLine();
............
}
텍스트 파일 쓰기
// 일반
new StreamWriter(@"ProtocolDef.cs")
// 아래는 유니코드로
StreamWriter sw = new StreamWriter(@"ProtocolDef.cs", false, Encoding.Unicode);
// 줄 넘김을 하려면 \r\n이 들어가 있어야 한다.
sw.Write("ㅇㅇㅇ\r\n");
sw.Write("ㅇㅇㅇ");
sw.Close();
지금 폴더에 있는 폴더와 파일
string[] AllFiles = Directory.GetFileSystemEntries(textBox1.Text);
foreach (string Entry in AllFiles)
{
listBox1.Items.Add(Entry);
}
지금 폴더에 있는 디렉토리와 파일
DirectoryInfo dir = new DirectoryInfo(textBox1.Text);
FileSystemInfo[] FSIs = dir.GetFileSystemInfos("*.*");
foreach (FileSystemInfo Entry in FSIs)
{
listBox1.Items.Add(Entry.Name);
}
지금 폴더에 있는 디렉토리와 이 디렉토리들의 모든 하위 디렉토리 포함
string[] AllFiles = Directory.GetDirectories(textBox1.Text, "*", SearchOption.AllDirectories);
foreach (string Entry in AllFiles)
{
listBox1.Items.Add(Entry);
}
지금 폴더에 있는 디렉토리와 이 디렉토리들의 모든 하위 디렉토리에 있는 모든 파일들
string[] AllFiles = Directory.GetFiles(textBox1.Text, "*.*", SearchOption.AllDirectories);
foreach (string Entry in AllFiles)
{
CurVersionlistBox.Items.Add(Entry);
}
기타 등등
- GetDirectoryName 지정된 경로 문자열에 대한 디렉터리 정보를 반환한다.
- GetExtension 지정된 경로 문자열에서 확장명을 반환한다.
- System.IO.Path.GetFileName 지정된 경로 문자열에서 파일 이름과 확장명을 반환한다.
- GetFileNameWithoutExtension 확장명 없이 지정된 경로 문자열의 파일 이름을 반환한다.
- GetFullPath 지정된 경로 문자열에 대한 절대 경로를 반환한다.
- GetPathRoot 지정된 경로의 루트 디렉터리 정보를 가져온다.
이 글은 2019-03-28에 작성되었습니다.