2014-01-20 60 views
0

好吧,這裏是我的故事:Visual Basic中:文件被認爲是在錯誤的文件夾

我建立一個fileviewer,我想刪除列表視圖中選擇的文件。

當我嘗試刪除它,它給了我一個錯誤,說該文件沒有找到。我看着我的桌面,文件就在那裏。這裏是原始代碼:

dim f as string = lv1.focuseditem.text 
my.computer.filesystem.deletfile(f) 
lv1.update() 

這給了我那個錯誤。我更新的代碼應該給我看計算機會認爲我的文件是:

Dim file As String = lv1.FocusedItem.Text 
Dim testFile As System.IO.FileInfo 
testFile = My.Computer.FileSystem.GetFileInfo(file) 
Dim folderPath As String = testFile.DirectoryName 
MsgBox(folderPath) 

這顯示一個消息框,顯示的路徑:

C:\用戶\ tgs266 \桌面\ SIOS \ SIOS \ SIOS \ OBJ \調試\ test.txt的

但真正的文件的位置是:

C:\用戶\ tgs266 \桌面\ test.txt的

請幫助

+1

將文件加載到列表視圖時,將完整的文件名存儲爲子項目(如果您不添加列標題,則不會顯示)。那麼當你想刪除時,使用該子項目。此外,子項目可以有名稱,因此您可以跟蹤存儲的內容以使其更容易。 「測試」是一個非常糟糕的名字,因爲你可能在多個位置有多個。 – Plutonix

回答

0

你如何得到ListView的文件名?它只是文件名而沒有路徑?

例如,如果lv1.FocusedItem.Text是「test.txt」,並且這是您使用的值(不含路徑),那麼默認情況下,程序將查看它正在執行的目錄。這很可能是您爲什麼要「重新看到C:\Users\tgs266\Desktop\SIOS\SIOS\SIOS\obj\Debug\test.txt作爲位置,而不是你所期望的。

如果所有的文件都在您的桌面上,你可以使用Environment.GetFolderPathEnvironment.SpecialFolder Enumeration一起拿到文件,像這樣:

Dim file As String = lv1.FocusedItem.Text 
Dim testFile As System.IO.FileInfo 
testFile = My.Computer.FileSystem.GetFileInfo(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\" + file) 
Dim folderPath As String = testFile.DirectoryName 
MsgBox(folderPath) 

但是,如果你要擁有遍佈你的文件系統,您最好將@Plutonix在他的評論中指明的完整路徑存儲起來。

+0

真正長的路徑名實際上看起來像一個VS項目文件夾('Obj \調試\ /調試/什麼 - 環境變量 - 可用 - Windows的 – Plutonix

+1

@Plutonix - 我同意它看起來像一個VS項目文件夾。實際上,我希望它能在bin \ debug中看到,但我對VB.NET並不像我在C#中那麼熟悉,所以可能會有一些VB特別的事情發生。無論如何,在不瞭解更多關於OP在ListView中放置什麼的情況下,很難給出更詳細的答案。 – Tim

0

看起來您的代碼正在服務器上的應用程序路徑中查看,而您想查看用戶桌面位置。

+0

好的謝謝,但我該如何解決它 – tgs266

+0

您將需要導航到用戶目錄...看看使用服務器環境值。 – Mych

+0

我的程序沒有在其上的服務器 – tgs266

相關問題