Кодът казва, че файлът не съществува, но съществува

Имам файл, създаден от OCR програма, до която се опитвам да осъществя достъп, след като е създаден. В моя код проверявам дали файлът съществува. Ако проверя така:

 If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" + sNewFileName) Then

програмата казва, че този файл не съществува. Ако обаче задам пътеките така:

 If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\8application2_0001.txt") Then

програмата продължава.

Когато отстранявам грешки и влизам в кода ред по ред, тогава програмата се изпълнява и връща, че файлът съществува, като използва параметризирания низ (първи пример за код)

  • Задал съм разрешенията за файл/папка на Пълен контрол за всички (само за този тест). Файлът не е само за четене и е „готов за архивиране“.

Някакви идеи?

РЕДАКТИРАНЕ:

Промених кода въз основа на предложения като:

            Dim sPortalPath, sFullPath, sDirPath As String
            sDirPath = "C:\inetpub\wwwroot\usbtest\"
            sPortalPath = "Portals\0\uploads\"
            sFullPath = sDirPath & sPortalPath & sNewFileName

            If File.Exists(sFullPath) = True Then

Дебъгерът ми дава следното: въведете описание на изображението тук

Когато стартирам програмата, тя ми казва, че не съществува! (скубя си косата)


person alwaysVBNET    schedule 15.02.2014    source източник
comment
sNewFileName наистина ли има 8application2_0001.txt като стойност? Може би сте поставили обратна наклонена черта преди него.   -  person Davlog    schedule 15.02.2014
comment
[въздишка] какво показва вашият дебъгер в низа 'sNewFileName'? Ако заредите низовия израз в междинна низова стойност и я прегледате, какво има там?   -  person Martin James    schedule 15.02.2014
comment
sNewFileName също съдържа ли разширението?   -  person Jeroen Vannevel    schedule 15.02.2014
comment
Копирано от програмата за отстраняване на грешки: sNewFileName 8application2_0001.txt String   -  person alwaysVBNET    schedule 15.02.2014
comment
@MartinJames Как да заредя низовия израз в междинна низова стойност и да го прегледам   -  person alwaysVBNET    schedule 15.02.2014
comment
Като настрана, винаги е по-добре да използвате '&' за конкатенация на низове във VB, тъй като при някои кръгове '+' ще накара компилатора да се опита да превърне вашия низ в int (и т.н.) и да извърши добавяне. В този случай не мога да го видя, но едно е да се махнеш от пътя.   -  person peterG    schedule 15.02.2014
comment
Имайте предвид, че Windows може безшумно да променя главните пътища за определени системни местоположения, като ви насочва към скрит корен във вашата собствена директория на профила - това важи за неща като C:\Windows и C:\ProgramData, така че няма да ме изненада, ако някои се случваха тук.   -  person Moo    schedule 15.02.2014
comment
Първото правило на програмирането: Вината винаги е ваша. Низовете, предоставени на Function File.Exists, е МНОГО вероятно да не са равни.   -  person Markus    schedule 15.02.2014
comment
Можете ли да опитате нов текстов файл от Notepad. Само за да се уверя, че не е самият файл   -  person indofraiser    schedule 15.02.2014


Отговори (3)


Във VB трябва да свържете низове с оператора &

If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" & sNewFileName) Then

вместо

If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" + sNewFileName) Then
person Samy Bencherif    schedule 15.02.2014
comment
Но също така работи. Дори ако – прав си – това е ЛОША ПРАКТИКА. - person Phantômaxx; 15.02.2014

Поставете файла си в низова променлива

 Dim nStr As String = "C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" & sNewFileName) 

Тогава направете проверката си така...

If File.Exist(nStr) Then ...

РЕДАКТИРАНЕ Опитайте това...

 Dim myFilePath as string=Server.MapPath ("~/myfolder/" & sNewFileName)
 If File.Exists(myFilePath) Then
 'do my work here'
 End If
person zaggler    schedule 15.02.2014
comment
Поставете точка на прекъсване на if file.exist, когато се счупи, задръжте курсора на мишката върху променливата nStr и се уверете, че е правилна. - person zaggler; 15.02.2014

Ето връзка от MSDN, обясняваща Метод File.Exists

person Diaton    schedule 17.02.2014