Как я могу получить Get на InputStream? - PullRequest
4 голосов
/ 28 августа 2011

Одна из неприятных вещей закодированных пакетов заключается в том, что они должны быть в отдельном файле.Если мы хотим распространять простое автономное приложение (в кодировке), нам нужно предоставить два файла: «интерфейс» приложения и пакет приложения.

Если я помещу все содержимое закодированного файла встрока и преобразовать эту строку в InputStream, я на полпути, чтобы просмотреть содержимое этого пакета в виде файла.

Но, Get, это, насколько мне известно, единственная операция (также используемая в Needs), которая имеет декодированиефункция, не работает на потоках.Он работает только с реальными файлами.

Может кто-нибудь найти способ получить поток?

Ответы [ 3 ]

6 голосов
/ 28 августа 2011

Ожидание прибытия Mathematica на мой iPhone, поэтому ничего не смог проверить, но почему бы вам не записать строку во временный файл и не получить его?

Обновление

Вот как это сделать:

encoded = ToFileName[$TemporaryDirectory, "encoded"];

Export[encoded, "code string", "Text"]; (*export encrypted code to temp file *)

Важно скопировать содержимое строки кода из файла ASCII, содержащего закодированный код, с помощью редактора ASCII и вставить его между существующими пустыми кавычками (""). Mathematica выполнит автоматическое экранирование обратной косой черты и кавычек, которые могут быть в коде. Этот файл был сделан ранее с использованием Encode. Не могу сделать это здесь, в примере кода, так как Markdown SO портит строку.

Get[encoded] (* get encrypted code and decode *) 

DeleteFile[encoded] (* Remove temp  file *)

Окончательный ответ

Get не требуется для декодирования. ImportString тоже работает:

ImportString["code string", "NB"] 

Как и выше, вставьте ваш закодированный текст из редактора ASCII прямо между "" и позвольте MMA выполнить экранирование.

enter image description here

3 голосов
/ 28 августа 2011

Я не знаю, как получить поток, но вы можете сохранить закодированные данные в одном пакете, записать их во временный файл, а затем прочитать временный файл обратно с помощью Get.

0 голосов
/ 28 февраля 2015

Просто чтобы быть в курсе:

Get работает с потоками начиная с V9.0.

...