| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Копирование части файла |
| Автор: newinjava 28.4.2011, 21:11 | ||
| Здрасти. У меня проблема с BufferedWriter, он не хочет сохранять то что ему дают. Искажает инфу. Вот код:
В Векторах starts и ends хронятся оффсэты определённых кусков файла. После вызова выше указонной функции из файла, в котором находятся несколько картинок друг за другом, должы быть вытащенны все картинки. Для этого я другой функцией ищу места где лежат бильды и сохраняю в starts и ends. Но вот проблемма, я получаю потерю данных. Копии не полноценны, т.е. картинки не показывается. Как уже по закоментированным объектам видно испробывал всё что мог. Ни чего не помогло. Единствинная радость это настоящие состояние функции, она хоть и не работает так как мне надо но часть картинки открывается. Во всех остольных попытках и того небыло. Посмотрел содержание файла, разница в одном символе. Кокойто квадратный символ всегда заменяется на ?. Я понял именно это и ведёт к искожению файла. Как мне решить эту проблемму, что я делаю не так? |
| Автор: Stolzen 28.4.2011, 21:51 | ||
Попробуйте что-нибудь типа такого
Тоже искажает? |
| Автор: newinjava 28.4.2011, 22:14 |
| Проканало. Спасибо. А вчём причина то? -------- Добавел P.S. Блин, постов маловато. Хотел плюс ткнуть. |
| Автор: Stolzen 29.4.2011, 05:57 | ||
А не знаю. Попробуйте теперь это обернуть BufferedInputStream:
Ну можно попросить кого-нибудь |
| Автор: newinjava 29.4.2011, 08:49 |
Кто-нибудь!!!!!!!!!!!!!!!! Пожалуйста поставти плюсик, доброму человеку от моего имени. За рание спасибо. P.S. Надеюсь модератор отреагирует и с играет роль "кого-нибудь". |
| Автор: LSD 29.4.2011, 12:18 | ||
Done. |
| Автор: newinjava 29.4.2011, 12:55 |
Ну вот и чудненько. Спасибки. |
| Автор: newinjava 29.4.2011, 18:00 | ||
| Интересная проблема. При выводе первой части файла, получается правельный размер. В этом случае 1024 Byte Но вот при выводе второй части размер получается 3072 Byte. Хотя я выполнил skip(2048). Может я чего не так понял в работе потоков? Моя задача токова. Разбить файл на части которые указанны в Векторах starts и ends. Для примера я прописал статически оффсеты трёх частей файла. Логически все три части должны быть по 1024 Byte но вот первая часть 1024 , вторая 3072 и третья 4096. Токое ощущение что каждая часть выводится от нуля до значения в Векторе ends.get(nr) а не так как должна от starts.get(nr) до ends.get(nr).
Что тут не так? |
| Автор: newinjava 29.4.2011, 18:21 |
| Заглянул в те файлы котоые имеют корявые размеры. Почемуто после нужных байтов в файл дописываются NULL именно эти байты и косячат размер файла. Я эти NULL просто тупо в Notepad++ удалил, файл открылся без проблем и рамер стал правельным. Почему моя функция дописывает этот мусор в файл? Добавлено через 8 минут и 55 секунд Убрал галочку. Вопрос решен. |
| Автор: newinjava 29.4.2011, 22:06 | ||
| Нашел свою ошибку. ende У меня является OFFSET до куда должно писаться, по этому и пмсалось лишнее. Надо было сделать так:
Всем спасибо |