2013-07-07 8 views
0

그 코드를 도와 주시겠습니까?코드가 작동하지 않습니다 ... 파일 검색 후 파일을 죽이기 처리, 파일 검색, 스트림 작성

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 

Dim x As String = "C:\Users\Andy\Documents\Visual Studio 2008\Projects\minecraft srv\" 

    For Each app As Process In Process.GetProcesses 
     If app.ProcessName = "notepad" Then 
      app.Kill() 
     End If 
    Next 

    Dim result As String 
    Dim servprop() As String 
    servprop = System.IO.Directory.GetFiles(x, "server.*") 

    For Each file In servprop 
     result = Path.GetFileName(file) 
    Next 

    Dim z As String = "C:\Users\Andy\Documents\Visual Studio 2008\Projects\minecraft srv\" & result.ToString 
    Dim t As StreamWriter = New StreamWriter(z) 
    t.WriteLine(TextBox1.Text.ToString) 
    t.Close() 
End Sub 

그래서 ... 나는 메모장이 열려있는 경우 발견하고 그것을 죽이는 버튼 (단추 1)를 얻었다. 그런 다음 server.properties가 발견되면 "x"위치의에서 "server.Properties"를 검색하고 "result"는 그의 이름 (서버)을 얻습니다. "z"는 streamwriter가 textbox1의 텍스트를 작성해야하는 파일 위치입니다 .

그리고 작동하지 않습니다 ... streamwirter가 server.properties에 쓰지 않습니다 ... 왜? 언급 : 나는 단지 꼬마 야. 나는 스스로 시각적으로 배워야한다.

+0

'End If'와 'Next'가 너무 많습니다. 코드가 누락 되었습니까? 그리고 오류 메시지가 나타 났습니까? – Steve

+0

방금 ​​경고 1 개 : ... 변수 '결과'는 값이 지정되기 전에 사용됩니다. 런타임시 널 참조 예외가 발생할 수 있습니다. –

+0

그리고 나는 아무것도 빠져 있지 않다는 것을 확신합니다. 그냥 명령에 대한 나의 나쁜 이해 –

답변

0

"server.properties"라는 파일이 하나있는 경우이 파일을 검색하는 모든 코드를 제거하고 직접 쓸 수 있습니다.

Dim z As String 
z = System.IO.Path.Combine(x, "server.properties") 

Using t = New StreamWriter(z) 
    t.WriteLine(TextBox1.Text.ToString) 
    t.Flush() 
End Using 

오류와 관련하여 쓰기 코드를 적절한 using 문으로 캡슐화하면 완전한 정리가 보장됩니다. 또한 Flush()에 대한 전화를 추가하는 것은 아마도 필요하지 않지만 해를 끼치 지 않습니다.

+0

어떤 플러시를 의미합니까? 감사합니다. –

+0

정말로 고마워요! –

+0

MSDN의 Flush()에 대한 링크 추가 – Steve