Есть примеры где наглядно показывается как мне сохранить данные в файл и считать их, не могу понять как мне эти данные просто передать к примеру просто закрепив в посте, или просто передать этот класс в другой метод.
AddressBook.Builder addressBook = AddressBook.newBuilder();
// Read the existing address book.
try {
addressBook.mergeFrom(new FileInputStream(args[0]));
} catch (FileNotFoundException e) {
System.out.println(args[0] + ": File not found. Creating a new file.");
}
// Add an address.
addressBook.addPerson(
PromptForAddress(new BufferedReader(new InputStreamReader(System.in)),
System.out));
// Write the new address book back to disk.
FileOutputStream output = new FileOutputStream(args[0]);
addressBook.build().writeTo(output);
output.close();
Ответ
Используйте не FileInputStream/FileOutputStream, а другие уместные в вашем случае потоки ввода/вывода. Например это могут быть ByteArrayInputStream и ByteArrayOutputStream
// пишем
ByteArrayOutputStream baos = new ByteArrayOutputStream();
addressBook.build().writeTo(baos);
byte[] data = baos.toByteArray();
// читаем
AddressBook addressBook = AddressBook.parseFrom(new ByteArrayInputStream(data));
Или, например, OutputStream HTTP-соединения:
HttpURLConnection conn = (HttpURLConnection) new URL("http://...").openConnection();
conn.setRequestMethod( "POST" );
conn.setRequestProperty("Content-Type", "application/octet-stream");
addressBook.build().writeTo(conn.getOutputStream());
Впрочем, для работы именно с байт-массивом документация предлагает готовые методы:
byte[] toByteArray();: сериализует сообщение и возвращает массив байтов.
static Person parseFrom(byte[] data);: парсит сообщение из массива байтов.
То есть что-то вроде:
// пишем
byte[] data = addressBook.toByteArray();
// читаем
addressBook = AddressBook.parseFrom(data);
Комментариев нет:
Отправить комментарий