Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. 1.) Проверка здесь . В основном сделайте это:
Function FileExists(ByVal FileToTest As String) As Boolean
FileExists = (Dir(FileToTest) <> "")
End Function
я предоставлю Вам право выяснять различную необходимую обработку ошибок, но это среди вещей обработки ошибок, которые я рассмотрел бы:
2.), Как Удалить Файл. Взгляд это. В основном используют команду Kill, но необходимо допускать возможность файла, являющегося только для чтения. Вот функция для Вас:
Sub DeleteFile(ByVal FileToDelete As String)
If FileExists(FileToDelete) Then 'See above
' First remove readonly attribute, if set
SetAttr FileToDelete, vbNormal
' Then delete the file
Kill FileToDelete
End If
End Sub
Снова, я оставлю обработку ошибок Вам, и снова это вещи, которые я рассмотрел бы:
это должно вести себя по-другому для каталога по сравнению с файлом? Пользователю, должно быть, придется явно указать, что они хотят удалить каталог?
Вы хотите, чтобы код автоматически сбросил атрибут "только для чтения", или пользователю нужно дать своего рода признак, что атрибут "только для чтения" установлен?
РЕДАКТИРОВАНИЕ: Отмечание этого ответа как сообщество Wiki, таким образом, любой может изменить его в случае необходимости.
Альтернативный способ кодировать ответ Brettski, с которым я иначе соглашаюсь полностью, мог бы быть
With New FileSystemObject
If .FileExists(yourFilePath) Then
.DeleteFile yourFilepath
End If
End With
Тот же эффект, но меньше (хорошо, ни один вообще) объявления переменной.
FileSystemObject является действительно полезным инструментом и определенно стоящий получения дружественным по отношению к. Кроме чего-либо еще, для текстового файла, пишущий это может на самом деле иногда быть быстрее, чем альтернатива прежней версии, которая может удивить несколько человек. (По моему опыту, по крайней мере, YMMV).
Я буду, вероятно, гореться для этого, но какой смысл того, чтобы тестировать на существование, если Вы просто соберетесь удалить его? Один из моих главных главных объектов неприязни является приложением, бросающим ошибочное диалоговое окно с чем-то как, "Невозможно удалить файл, он не существует!"
On Error Resume Next
aFile = "c:\file_to_delete.txt"
Kill aFile
On Error Goto 0
return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.
, Если файл не существует во-первых, выполненная миссия!
Следующее может использоваться, чтобы протестировать на существование файла, и затем удалить его.
Dim aFile As String
aFile = "c:\file_to_delete.txt"
If Len(Dir$(aFile)) > 0 Then
Kill aFile
End If
В VB обычно Dir
для нахождения каталога файла. Если это не пробел тогда, это существует, и затем используйте Kill
для избавлений от файла.
test = Dir(Filename)
If Not test = "" Then
Kill (Filename)
End If
устанавливает ссылку на Сценарии. Библиотека времени выполнения и затем использует FileSystemObject:
Dim fso as New FileSystemObject, aFile as File
if (fso.FileExists("PathToFile")) then
aFile = fso.GetFile("PathToFile")
aFile.Delete
End if
Можно установить ссылку на Сценарии. Библиотека времени выполнения и затем использует FileSystemObject. Это имеет метод DeleteFile и метод FileExists.
См. статью MSDN здесь .