Если вам абсолютно нужна локальная копия файла, вам нужно будет открыть InputStream
копию содержимого в локальный файл, в котором вы знаете путь, а затем перейти оттуда. Sidenote: Guava ByteStreams#copy
- это простой способ выполнить это.
Конечно, этот файл больше не поддерживается исходным источником Uri, поэтому я не думаю, что это то, что вы хотите. Вместо этого вы должны работать с API-интерфейсом Uri. Взгляните на Storage Access Framework
Изменить
Вот как вы можете получить InputStream
из вашего Uri
InputStream inputStream = getContentResolver().openInputStream(uri);
Платформа "Windows Script Host" (если ya хотят назвать его, что), предлагает документ обертки XML, который добавляет функциональность по регулярным vbs файлам. Один из которых является способностью включать внешние файлы сценария и разновидностей VBscript и Jscript. Я никогда не становился очень глубоким в него, но я думаю, что это сделало бы то, что Вы желаете сделать. http://msdn.microsoft.com/en-us/library/15x4407c (По сравнению с 85) .aspx
можно включать JavaScript, VBScript или модули других языков сценария WScript.
файл WSF В качестве примера:
<job id="IncludeExample">
<script language="JavaScript" src="sprintf.js"/>
<script language="VBScript" src="logging.vbs"/>
<script language="VBScript" src="iis-queryScriptMaps.vbs"/>
</job>
, Если вышеупомянутый файл называют "iis-scriptmaps.wsf", выполняет его этот путь с cscript.exe:
cscript.exe iis-scriptmaps.wsf
Можно создать (относительно) небольшую функцию в каждом файле, что Вы хотите включать другие файлы в, следующим образом:
sub includeFile (fSpec)
dim fileSys, file, fileData
set fileSys = createObject ("Scripting.FileSystemObject")
set file = fileSys.openTextFile (fSpec)
fileData = file.readAll ()
file.close
executeGlobal fileData
set file = nothing
set fileSys = nothing
end sub
и затем используют его для включения определенных файлов - они выполняются, как будто они были встроены.
includeFile "commonapi.vbi"
includeFile "dbcalls.vbi"
Это в основном открывает файл, читает все содержание в строку, затем выполняет ту строку. Нет никакой обработки ошибок на вызовах ввода-вывода, так как этот вид материала обычно делается, как только на программе запускаются, и Вы хотите перестать работать, если существует проблема включая его.
<час> Примечание, что эти includeFile
функция может быть сжата до:
Sub includeFile(fSpec)
With CreateObject("Scripting.FileSystemObject")
executeGlobal .openTextFile(fSpec).readAll()
End With
End Sub
Или даже к (если Вы не являетесь неблагоприятными длинным линиям):
Sub includeFile(fSpec)
executeGlobal CreateObject("Scripting.FileSystemObject").openTextFile(fSpec).readAll()
End Sub
Этот VBScript использует локально или служил классическому стилю ASP?
, Если его классический ASP, можно использовать SSI todo это:
<!-- #include virtual="/PathTo/MyFile.vbs" -->
IIS 5 и также позволяет script
тег для включения других файлов из файла ASP. (Действительно ли Ваш VBScript является ASP-страницей или сценарием Windows?) Вот пример:
<script language="VBScript" runat="server" src="include.asp"></script>
поведение и правила несколько отличаются от серверной стороны, включает.Примечание: Я на самом деле никогда не пытался использовать этот синтаксис от классического ASP.
Вы можете использовать функцию ExecuteGlobal для запуска произвольного кода VBS в глобальном пространстве имен. Пример можно найти здесь: http://www.source-code.biz/snippets/vbscript/5.htm
Вы определенно можете использовать тег WSF script в cscript:
<script language="VBScript" src="ADOVBS.INC"/>
Если вы используете ADOVBS.inc для доступа к ADODB, убедитесь, что удалили
<% %>
теги из ADOVBS.INC.