powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / Не ожидал от разработчиков Android: InputStream.available() для задания размера буфера
5 сообщений из 5, страница 1 из 1
Не ожидал от разработчиков Android: InputStream.available() для задания размера буфера
    #37666780
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читаем Android SDK API:

авторIt is particularly important to realize that you must not use this method to size a container and assume that you can read the entirety of the stream without needing to resize the container. Such callers should probably write everything they read to a ByteArrayOutputStream and convert that to a byte array. Alternatively, if you're reading from a file, length() returns the current length of the file (though assuming the file's length can't change may be incorrect, reading a file is inherently racy).

Смотрим в другом месте:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
void createExternalStoragePublicPicture() {
    // Create a path where we will place our picture in the user's
    // public pictures directory.  Note that you should be careful about
    // what you place here, since the user often manages these files.  For
    // pictures and other media owned by the application, consider
    // Context.getExternalMediaDir().
    File path = Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES);
    File file = new File(path, "DemoPicture.jpg");

    try {
        // Make sure the Pictures directory exists.
        path.mkdirs();

        // Very simple code to copy a picture from the application's
        // resource into the external file.  Note that this code does
        // no error checking, and assumes the picture is small (does not
        // try to copy it in chunks).  Note that if external storage is
        // not currently mounted this will silently fail.
        InputStream is = getResources().openRawResource(R.drawable.balloons);
        OutputStream os = new FileOutputStream(file);
        byte[] data = new byte[is.available()];
        is.read(data);
        os.write(data);
        is.close();
        os.close();

        // Tell the media scanner about the new file so that it is
        // immediately available to the user.
        MediaScannerConnection.scanFile(this,
                new String[] { file.toString() }, null,
                new MediaScannerConnection.OnScanCompletedListener() {
            public void onScanCompleted(String path, Uri uri) {
                Log.i("ExternalStorage", "Scanned " + path + ":");
                Log.i("ExternalStorage", "-> uri=" + uri);
            }
        });
    } catch (IOException e) {
        // Unable to create file, likely because external storage is
        // not currently mounted.
        Log.w("ExternalStorage", "Error writing " + file, e);
    }
}
...
Рейтинг: 0 / 0
Не ожидал от разработчиков Android: InputStream.available() для задания размера буфера
    #37666843
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тю, так тож пример. Посадили небось джуниора писать такие примеры. Напишите им в баг трек. Есть у них такой?
...
Рейтинг: 0 / 0
Не ожидал от разработчиков Android: InputStream.available() для задания размера буфера
    #37667118
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там в комменте написано, что это простой примерчик, который предполагает, что картинка небольшая и потому копирует ее не по частям. Пример ведь на использование метода getExternalStoragePublicDirectory ,а не InputStream.available()
...
Рейтинг: 0 / 0
Не ожидал от разработчиков Android: InputStream.available() для задания размера буфера
    #37667147
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chpashaтам в комменте написано, что это простой примерчик, который предполагает, что картинка небольшая и потому копирует ее не по частям. Пример ведь на использование метода getExternalStoragePublicDirectory ,а не InputStream.available()
Многие считают, и с ними сложно не согласиться, что примеры обязаны быть качествеными во всём. Ведь новички их тупо копипастят, не зная что это говнокод.
...
Рейтинг: 0 / 0
Не ожидал от разработчиков Android: InputStream.available() для задания размера буфера
    #37667268
skywriter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczпримеры обязаны быть качествеными во всём. Ведь новички их тупо копипастят, не зная что это говнокод.
А потом они отвлекают других вопросами типа такого . И хорошо, если подобные баги выявляются своевременно.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / Не ожидал от разработчиков Android: InputStream.available() для задания размера буфера
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]