Код говорит, что файл не существует, но существует

У меня есть файл, созданный программой 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 Строка   -  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
Первое правило программирования: всегда виноваты вы. Строки, предоставляемые функции File.Exists, ОЧЕНЬ вероятно не будут равными.   -  person Markus    schedule 15.02.2014
comment
Можешь попробовать свежий текстовый файл из блокнота. Просто чтобы убедиться, что это не сам файл   -  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