Інтерфейс введення Aspose.TeX | Java
Будь ласка, зверніться до Aspose.TeX для Java посилання на API, щоб отримати формальні визначення реалізації введення/виведення.
Поняття вхідного каталогу
Оскільки примітиви вводу-виводу мови TeX можуть працювати лише з іменами файлів, Aspose.TeX для Java визначає каталог як відображення між іменами та масивами даних. Маси даних мають бути файлами, потоками, масивами або будь-яким іншим. API дозволяє нам окремо вказувати вхідні та вихідні робочі каталоги. Він забезпечує загальний інтерфейс IInputWorkingDirectory, який користувач може реалізувати для власних цілей. Він також надає власні реалізації, які будуть розглянуті нижче. Інтерфейс визначає метод getFile(), який повертає потік даних і визначає повне ім’я файлу, при цьому в якості першого аргументу бере якесь, гіпотетично інше ім’я, яке, по суті, є ключем відображення .
Отримання вхідних файлів із файлової системи диска
Ось як би ми це зробили:
1// Create conversion options instance.
2...
3// Specify a file system working directory for the input.
4options.setInputWorkingDirectory(new InputFileSystemDirectory(Utils.getInputDirectory()));
Цей варіант використання досить простий, тому ми не будемо на ньому довго зупинятися.
Отримання вхідних файлів із ZIP-архіву
Ми також можемо помістити вхідні файли в архів ZIP і вважати його вхідним каталогом. У цьому випадку ми повинні діяти наступним чином:
1// Open the stream for the ZIP archive that will serve as the input working directory.
2final Stream inZipStream = File.Open(Path.Combine(RunExamples.InputDirectory, "zip-in.zip"), FileMode.Open))
3{
4 // Create conversion options instance.
5 ...
6 // Specify a ZIP archive working directory for the input. You can also specify a path inside the archive.
7 options.setInputWorkingDirectory(new InputZipDirectory(inZipStream, "in"));
8} finally {
9 if (inZipStream != null)
10 inZipStream.close();
11}
Спочатку ми створюємо потік, що містить ZIP-файл. Потім, після створення параметрів перетворення, ми встановлюємо параметр InputWorkingDirectory як екземпляр класу InputZipDirectory. Другим аргументом конструктора є базовий шлях всередині архіву. Якщо ми хочемо, щоб весь архів був вхідним каталогом, ми повинні передати порожній рядок.
Поняття про вхідний термінал
Тепер давайте згадаємо, що є також термінальний вхід. Що стосується цього, Aspose.TeX для Java визначає загальний інтерфейс IInputTerminal як такий, що має два методи. Один із них повертає екземпляр BufferedReader. Інший метод повертає InputStream як базовий потік. Надані реалізації інтерфейсу обговорюються нижче.
Отримання введення терміналу з консолі
Для цього нам потрібно встановити опцію TerminalIn як екземпляр класу InputConsoleTerminal.
1// Create conversion options instance.
2...
3// Specify the console as the input terminal.
4options.setTerminalIn(new InputConsoleTerminal()); // Default value. Arbitrary assignment.
Але, чесно кажучи, це значення параметра за замовчуванням, тому немає потреби вказувати його. Через цей факт і доки немає інших реалізацій, цей розділ служить лише для демонстраційних цілей.
Теоретично, якщо у нас є інтерактивний файл TeX (або сценарій) з передбачуваною поведінкою, ми можемо захотіти реалізувати версію терміналу введення, яка б містила додатковий сценарій для відповіді на запити механізму TeX. Спробуйте свої сили, коли матимете час!