All Downloads are FREE. Search and download functionalities are using the official Maven repository.

android.app.backup.BackupDataInputStream Maven / Gradle / Ivy

Go to download

A library jar that provides APIs for Applications written for the Google Android Platform.

There is a newer version: Q-robolectric-5415296
Show newest version
/*
 * Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.app.backup;

import java.io.InputStream;
import java.io.IOException;

/**
 * Provides an {@link java.io.InputStream}-like interface for accessing an
 * entity's data during a restore operation. Used by {@link BackupHelper} classes within the {@link
 * BackupAgentHelper} mechanism.
 * 

* When {@link BackupHelper#restoreEntity(BackupDataInputStream) BackupHelper.restoreEntity()} * is called, the current entity's header has already been read from the underlying * {@link BackupDataInput}. The entity's key string and total data size are available * through this class's {@link #getKey()} and {@link #size()} methods, respectively. *

* Note: The caller should take care not to seek or close the underlying data * source, nor read more than {@link #size()} bytes from the stream.

* * @see BackupAgentHelper * @see BackupHelper */ public class BackupDataInputStream extends InputStream { String key; int dataSize; BackupDataInput mData; byte[] mOneByte; /** @hide */ BackupDataInputStream(BackupDataInput data) { mData = data; } /** * Read one byte of entity data from the stream, returning it as * an integer value. If more than {@link #size()} bytes of data * are read from the stream, the output of this method is undefined. * * @return The byte read, or undefined if the end of the stream has been reached. */ public int read() throws IOException { byte[] one = mOneByte; if (mOneByte == null) { one = mOneByte = new byte[1]; } mData.readEntityData(one, 0, 1); return one[0]; } /** * Read up to {@code size} bytes of data into a byte array, beginning at position * {@code offset} within the array. * * @param b Byte array into which the data will be read * @param offset The data will be stored in {@code b} beginning at this index * within the array. * @param size The number of bytes to read in this operation. If insufficient * data exists within the entity to fulfill this request, only as much data * will be read as is available. * @return The number of bytes of data read, or zero if all of the entity's * data has already been read. */ public int read(byte[] b, int offset, int size) throws IOException { return mData.readEntityData(b, offset, size); } /** * Read enough entity data into a byte array to fill the array. * * @param b Byte array to fill with data from the stream. If the stream does not * have sufficient data to fill the array, then the contents of the remainder of * the array will be undefined. * @return The number of bytes of data read, or zero if all of the entity's * data has already been read. */ public int read(byte[] b) throws IOException { return mData.readEntityData(b, 0, b.length); } /** * Report the key string associated with this entity within the backup data set. * * @return The key string for this entity, equivalent to calling * {@link BackupDataInput#getKey()} on the underlying {@link BackupDataInput}. */ public String getKey() { return this.key; } /** * Report the total number of bytes of data available for the current entity. * * @return The number of data bytes available, equivalent to calling * {@link BackupDataInput#getDataSize()} on the underlying {@link BackupDataInput}. */ public int size() { return this.dataSize; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy