본문 바로가기

ASP.NET

ASP.NET 파일생성 & 글쓰기


FileStream : 파일의 읽기/쓰기 작업을 모두 지원한다.

StreamWriter : 지정경로의 지정파일에 대한  StreamWriter 클래스의 새 인스턴스를 초기화한다.
해당 파일이 있으면 덮어쓰거나 추가합니다. 해당 파일이 없으면 이 생성자는 새 파일을 만든다. 

FileStream을 사용하기위해 임의로 파일의 저장경로를 선언 할 변수를 만들고 시작한다. 밑에서는 변수 defaultPath 사용.
        string defaultPath = Server.MapPath(ConfigurationManager.AppSettings["LoginPath"]);

        DateTime NowDate = DateTime.Today;
        string toDay = NowDate.ToString().Replace("-", "").Substring(0, 8);
        defaultPath += toDay + ".txt";

파일생성

        FileInfo fInfo = new FileInfo(defaultPath);
         if (!fInfo.Exists)
        {
            fInfo.Create();
        }

FileInfo fInfo = new FileInfo(파일이저장된경로)
fInfo : defaultPath 경로에 파일정보를 가져온다.
if문으로 제어, 해당 경로에 해당 파일정보가 존재하지 않는다면 true.
fInfo의 정보대로 해당경로의 해당파일을 생성(.Create)
or

FileStream fs = new FileStream(defaultPath, FileMode.Create);


글쓰기

        FileStream fs = new FileStream(defaultPath, FileMode.Open, FileAccess.ReadWrite);
        StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
        sw.WriteLine(출력 할 글의 내용);
        sw.Flush();
        sw.Close();

FileStream fs = new FileStream(파일이저장된경로, FileMode.Open, FileAccess.ReadWrite);
sw.Flush()- Flush는 꼭 사용하지 않아도 될때도 있지만, 없어서 에러가나는 경우가 있기때문에 이왕이면 표기.
지정한 경로(defaultPath)에 위치한 파일에 해당글("출력 할 글의 내용")을 출력한다.

아쉬운점은?
- 위와 같은방법으로 코딩하면 파일이 없을 경우 에러발생.
- 글을 누적으로 저장 불가능.
(위와같은 방식으로 한다면, 두 번째 쓴 글의 내용이 첫 번째 쓴 글의 내용을 덮어서 출력된다.)

첫 번째 저장: sw.WriteLine(맛있는);
두 번째 저장: sw.WriteLine(아침);
원하는 결과: 맛있는아침
기존 출력결과: 아침

그럼 누적되게 출력하려면?
 .AppendText()를 사용하면 [기존에있던 글 + 새로작성 글]로 출력 할 수 있다.
거기에 플러스알파로 .AppendText()를사용하면  fInfo.Create()를 별도로 추가하지 않아도 해당파일이 없으면 파일을 만들어주고
해당파일이 존재하면 해당파일에 글을 써준다.

파일생성과 글쓰기를 동시에

FileInfo fInfo = new FileInfo(defaultPath);       
StreamWriter sw = fInfo.AppendText();
sw.WriteLine(출력 할 글의 내용);
 sw.Flush();
 sw.Close();

 

'ASP.NET' 카테고리의 다른 글

ASP.NET PostBack (다시게시)  (0) 2011.06.15
ASP.NET Session  (0) 2011.06.14
ASP.NET 엑셀 다운로드하기- DB결과 엑셀로  (0) 2011.06.02
ASP.NET 접속자 IP찾기  (0) 2011.05.17
Enter를 <br / >로 바꿔주기  (0) 2011.05.16