Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FileOutputStream, Запись в файл, запись за 1 раз отлична от записи за 2 
:(
    Опции темы
TupleCa
Дата 5.4.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



вот часть кода
Код

        FileOutputStream out = new FileOutputStream(Filen,true);
        ...
        int k=0;
        while(!b && (r=buffis.read(Buffer))!= -1){
            out.write(Buffer, 0, r);
            
            readBytes+=r;
            k++;
            if(k==50) b=false;
        }

если if(k==50) b=false; убрать и записать данные за один раз. - то всё ок.
а если оставить. то  запись на 50-ой итерации остановится ( readBytes сохраняется. а всего итераций 90 примерно). потом если заново включить, то должно дальше дозаписаться. но происходит какое-то искожение.
т.е когда за один раз записываю - то 90168 байт получается. а когда за два раза, то другие число, например, 90976. соответсвенно файл не открывается уже.
PM   Вверх
AntonSaburov
Дата 5.4.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Лучше использовать break вместо b=false - что-то ты конструкцию какую-то страшную сделал. И убрать из условия !B вообще.

Есть подозрение, что прочитать успевает, а вот записать - не всегда. Я бы так попробовал

Код

        FileOutputStream out = new FileOutputStream(Filen,true);
        ...
        int k=0;
        while((r=buffis.read(Buffer))!= -1){
            out.write(Buffer, 0, r);
            
            readBytes+=r;
            k++;
            if(k==50) break;
        }


PM MAIL WWW ICQ   Вверх
TupleCa
Дата 5.4.2007, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



странно. но не пашет всё равно)). 
кстати, если у меня перед int k=0;  стоит buffis.skip((long)readBytes);. то потом в цикле чтение начинается с readBytes байта ,да?
PM   Вверх
AntonSaburov
Дата 5.4.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Тогда ставь отладочную печать - будет видно. Может какой-то сдвиг где вылезет. Или в дебагере - если есть возможность.
PM MAIL WWW ICQ   Вверх
TupleCa
Дата 5.4.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



вообщем когда делаю buffis.skip(readBytes); пропускается куда меньше чем readBytes.
например, readBytes = 64240, а skip'ится  1460.
как пропустить всё что надо.??

PM   Вверх
AntonSaburov
Дата 5.4.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



А зачем ? Может проще прочитать, но не записывать
PM MAIL WWW ICQ   Вверх
TupleCa
Дата 5.4.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Цитата(AntonSaburov @  5.4.2007,  20:15 Найти цитируемый пост)
А зачем ? Может проще прочитать, но не записывать 

хы. кстати да.
правда я уже намдудрил))
Код

        for(int i=0;i<readBytes;i++){
            bis.skip(1);
        }

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0459 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.