2013-12-13 5 views
1

Я пишу приложение, которое создает некоторые текстовые файлы. Я хочу их в некоторых папках, так что я сделал:Попытка создать хороший путь в vb.net

Dim fileLoc As String = "c:\users\%username%\downloads\users.txt" 
    If 1 + 1 = 2 Then <--- not very professional but it works! it works.... 
     Dim fs As FileStream = Nothing 
     If (Not File.Exists(fileLoc)) Then 
      fs = File.Create(fileLoc) 
      Using fs 
      End Using 
     End If 
    End If 
    If File.Exists(fileLoc) Then 
     Using sw As StreamWriter = New StreamWriter(fileLoc) 
      sw.Write(pcname.Text) 
     End Using 
    End If 

Но когда я пытаюсь отлаживать, происходит следующее:

DirectoryNotFoundException был необработанным Не удалось найти часть пути (C: \ Users \% username% \ downloads \ users.txt)

Я уверен, что это потому, что «% username%», потому что, когда я заполняю весь путь, он работает. Но когда программа находится на другом ПК, это не сработает!

+0

у вас есть имя пользователя? –

+1

Из любопытства - Почему «Если 1 + 1 = 2'? –

+0

lol возможно 1 + 1 = 2 можно игнорировать (он всегда будет равен true) и вместо этого удалить инструкцию if (чтобы сохранить больше строк кода!). – Codemunkeee

ответ

0
Dim fileLoc As String = "c:\users\" & Environment.UserName & "\downloads\users.txt" 
If 1 + 1 = 2 Then <--- not very professional but it works! it works.... 
    Dim fs As FileStream = Nothing 
    If (Not File.Exists(fileLoc)) Then 
     fs = File.Create(fileLoc) 
     Using fs 
     End Using 
    End If 
End If 
If File.Exists(fileLoc) Then 
    Using sw As StreamWriter = New StreamWriter(fileLoc) 
     sw.Write(pcname.Text) 
    End Using 
End If 

Это правильный код! спасибо всем за то, что подумали!

0

попробовать некоторые вещи, как этот

Dim userName as string = WindowsIdentity.GetCurrent().Name; 

Dim fileLoc As String = "c:\users\" & userName & "\downloads\users.txt" 
    If 1 + 1 = 2 Then <--- not very professional but it works! it works.... 
     Dim fs As FileStream = Nothing 
     If (Not File.Exists(fileLoc)) Then 
      fs = File.Create(fileLoc) 
      Using fs 
      End Using 
     End If 
    End If 
    If File.Exists(fileLoc) Then 
     Using sw As StreamWriter = New StreamWriter(fileLoc) 
      sw.Write(pcname.Text) 
     End Using 
    End If 
0

Я не думаю, что вы можете использовать переменные окружения, как это.

Вместо

Dim fileLoc As String = "c:\users\%username%\downloads\users.txt" 

Попробуйте

Dim fileLoc As String = "c:\users\" & Environment.UserName & "\downloads\users.txt" 
+0

Спасибо вам большое! Это работает! – berm

+0

Было бы безопаснее использовать 'Dim fileLoc As String = IO.Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.UserProfile)," downloads \ users.txt ")'. –

+0

Рад, что это было полезно. Пожалуйста, отметьте как ответ, если решение было полезно. –

 Смежные вопросы

  • Нет связанных вопросов^_^