2014-04-16 3 views
0

좋아요. 그래서 저는 textBox에있는 내용을 취한 다음, 버튼을 누르면 textBox의 내용이 파일 위치에 저장 될 것입니다. .exe를 다시로드하면 내용이 textBox에 다시 나타납니다. 파일에 무언가를 쓰고 다시로드하기

내가 지금까지^파일 위치에 기입 할

private void button3_Click(object sender, EventArgs e) 
{ 
File.WriteAllText(@"C:\Application.txt", textBox1.Text); 
} 

, 나는이 여러 번 시도했지만 내 C의 파일을 만들고 싶어하는 것 나던 무슨이다 :.

private void Form1_Load(object sender, EventArgs e) 
{ 
try 
{ 
textBox1.Text = File.ReadAllText(@"C:\Application.txt", Encoding.ASCII); 
} 
catch 
{ 

} 

^

파일이 후, 감사합니다 다시는

모든 모든 도움에서 제공된 텍스트 상자에 감사를 주입로드합니다.

+1

코드 자체가 정확합니다. 파일을 저장할 때 권한 오류 또는 무언가를 얻지 못하셨습니까? –

+1

그리고? 코드가 합리적으로 보입니다 (c :의 루트에 쓸 수있는 "액세스 거부"가 누락되지 않음) - 오류/예외가 발생 했습니까? –

+0

오류가 나타나지 않는 한 아무런 팝업이 나타나지 않습니다. – Wire

답변

3

관리 액세스가 필요하기 때문에 C 드라이브에 쓸 때 예외가 발생할 수 있습니다. Visual Studio를 관리자로 실행하십시오 (이 경우 VS에서 시작될 때 응용 프로그램이 관리자로 실행 됨). 또는 다른 위치로 작성하십시오. 귀하의 코드는 괜찮습니다. 비트는 불필요하며 제거하는 것이 좋습니다 (파일을 쓰는 인코딩이 아닌 것).

+0

관리자로 실행했는데 파일이 만들어지지 않았으므로 파일을 만들 수있는 제안이 있습니까? – Wire

+1

@Dakota 당신은'@ ". \ Application과 같은 상대 경로를 사용할 수 있습니다.txt "는 바이너리가 저장되는 폴더에 쓰고, C : \ Users \ Dakota \ Documents 나 뭐든간에 경로를 줄 수 있습니다. – evanmcdonnal

+0

감사합니다. 나는 프로그램 파일에 썼습니다. 근무한 : D – Wire

1

C: 드라이브에 직접 쓰려고하면 문제가 발생할 수 있습니다.

쓰기 권한이있는 위치에 편지를 작성하십시오. 원하는 경우 ApplicationData 디렉토리 (현재 사용자에게 고유 한 응용 프로그램 파일 용)을 사용하거나 SpecialFolder.MyDocuments을 사용할 수 있습니다.

private string applicationFilePath = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.ApplicationData), "Application.txt"); 

private void button3_Click(object sender, EventArgs e) 
{ 
    File.WriteAllText(applicationFilePath, textBox1.Text); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    textBox1.Text = File.ReadAllText(applicationFilePath, Encoding.ASCII); 
} 
0

나는 같은 것을 할 것입니다 :

using System.IO; 

private void button3_Click(object sender, EventArgs e) 
{ 
    using (var stream = new FileStream(@"C:\Application.txt", FileMode.Create)) 
    using (var writer = new StreamWriter(stream, Encoding.ASCII)) 
     writer.Write(textBox1.Text); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    using (var stream = new FileStream(@"C:\Application.txt", FileMode.Open)) 
    using (var reader = new StreamReader(stream, Encoding.ASCII)) 
     textBox1.Text = reader.ReadToEnd(); 
} 

나는이 방법은 당신에게 당신의 내용에 대한 자세한 제어 할 수 있습니다 생각합니다. FileMode enum의 내용을 탐색하고 System.IO를 사용하여 을 추가하십시오. 지시.
using statementusing directive을 혼동하지 않도록주의하십시오.

또한 데이터가 플러시되고 응용 프로그램에서 파일을 더 이상 사용하지 않도록 스트림을 처리/종료해야합니다. 여기서 using 문은 스트림이 더 이상 사용되지 않을 때 처리하는 작업을 수행합니다.

편집 : 다른 게시물에서 언급했듯이 C : 디렉토리에 쓰면 관리 액세스 제한으로 인해 최신 운영 체제에서 문제가 발생합니다. 확실히 액세스 할 수있는 다른 드라이브/폴더에 기록하십시오.

// Current User 
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Application.txt"); 
// All users 
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Application.txt"); 
관련 문제