2013-08-06 2 views
0

아주 간단하게 들리지만 검색했기 때문에 방금 만든 파일을 열 수있는 방법을 찾지 못하는 것 같습니다. 앱. 파일이 생성되고 나면 파일을 열려고합니다.사용자가 vb.net에서 읽거나 쓸 파일을 엽니 다.

은 내가 Dim path As String = TextBox1.Text 및 사용자 이름 일단이 내가 "완료"라는 MSGBOX이있는의 SaveFileDialog에서 확인을 클릭하고 확인을 쳤을 때 나는이

FileOpen(FreeFile, path, OpenMode.Input)을 시도했지만 아무 일도 일어나지 않습니다. 난 그냥 로그를 열고 그것을 편집하거나 다시 또는 아무것도 저장할 수 있도록 사용자에게 보여주고 싶습니다.

위의 코드가있는 곳입니다. http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.filesystem.fileopen.aspx

누구나 파일을 열어 런타임 중에 처리하려고하기 때문에 검색하기가 어렵습니다. 나는 단지 Show에 의해 Launching에 의해 파일을하려고 누군가가 그것을 두 번 클릭 좋아해. 전체 내보내기 단추가 Sub를 클릭합니다. 기본적으로 목록 상자 항목을 파일에 씁니다.

Private Sub btnExport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExport.Click 

    Dim sfd As New SaveFileDialog 
    Dim path As String = TextBox1.Text 
    Dim arypath() As String = Split(TextBox1.Text, "\") 
    Dim pathDate As String 
    Dim foldername As String 
    foldername = arypath(arypath.Length - 1) 

    pathDate = Now.ToString("yyyy-MM-dd") & "_" & Now.ToString("hh;mm") 
    sfd.FileName = "FileScannerResults " & Chr(39) & foldername & Chr(39) & " " & pathDate 

    sfd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal) 
    sfd.Filter = "Text files (*.txt)|*.txt|CSV Files (*.csv)|*.csv" 
    sfd.ShowDialog() 

    path = sfd.FileName 

    Using SW As New IO.StreamWriter(path) 

     If CkbxFolder.Checked = True Then 
      SW.WriteLine("Folders") 
      For Each itm As String In ListBox1.Items 
       SW.WriteLine(itm) 
      Next 
     End If 

     If CkbxFiles.Checked = True Then 
      SW.WriteLine("Files") 
      For Each itm As String In ListBox2.Items 
       SW.WriteLine(itm) 
      Next 
     End If 

    End Using 
    MsgBox("Done...") 
    FileOpen(FreeFile, path, OpenMode.Input) 'Why can't I open a file for you... 

End Sub 
+1

FileOpen은 아무 것도 보여주지 않고 파일을 열면 내용을 읽고 여러 줄 텍스트 상자에 표시합니다. – Steve

답변

1

이전 VB6 방법을 사용하지 마십시오. 호환성 유지를 위해 여전히 여기에 있습니다. 새 코드는 System.IO 네임 스페이스에서보다 강력한 메서드를 사용해야합니다. 의견에 말했듯이

그러나, 제공 FileOpen는

당신은 쓰기 coud 단지 파일을 열고, 당신을 위해 아무것도 표시되지 않습니다

Using sr = new StreamReader(path) 
    Dim line = sr.ReadLine() 
    if !string.IsNullOrEmpty(line) Then 
     textBoxForLog.AppendText(line) 
    End If 
End Using 

하거나 (파일이 너무 큰 아닌 경우)

대안으로
Dim myLogText = File.ReadAllText(path) 
textBoxForLog.Text = myLogText 

, 파일 확장명과 연결된 프로그램을 실행하려면 운영 체제를 요구하고

을 위해 파일을 보여줄 수

Process.Start(path) 

이 무엇이든 기본 응용 프로그램을 사용하여 파일을 엽니 다 : 그것은 Start 방법입니다에

Process.Start(path) 
+0

고맙습니다. 쉽게 알 수있었습니다. – Scheballs

1

은 사용자가 두 번 클릭 한 것과 같은 동작을 얻으려면, System.Diagnostics.Process를 사용하고 파일 이름을 전달하려면 탐색기가 두 번 클릭 할 때처럼 확장명을 기반으로하는 파일 이름입니다.

관련 문제