powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Пререзаписать файл
11 сообщений из 11, страница 1 из 1
Пререзаписать файл
    #38962187
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 BufferedImage image = ImageIO.read(new ByteArrayInputStream(pictureData.getData()));

ImageWriter imgWriter = ImageIO.getImageWritersByFormatName("webp").next();

ImageWriteParam imgWriteParams = new WebPWriteParam(null);
imgWriteParams.setCompressionType("Lossy");

imgWriteParams.setCompressionQuality(.5f);
File file = new File("xxxx.webp");
 try (ImageOutputStream imageOutputStream = ImageIO.createImageOutputStream(file)) {
     imgWriter.setOutput(imageOutputStream);
    imgWriter.write(null, new IIOImage(image, null, null), imgWriteParams);
}


работает, но приналичии файла xxxx.webp он его не перезаписывает и не вываливается по исключению
чем заменить данный вывод на вывод чтоб файл перезаписываля (желательно без проверки на существование файла и его удаления)
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38963275
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Записать ноль байт?
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38963286
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
нет, надо чтоб новые данные записывались в файл с имеющимся именем. т.е. перезаписать файл новыми данными.
я решил таким образом
Files.deleteIfExists(file.toPath());
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38965614
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в новых виндах ничего не отломали, то запись нуля байт трактуется как "усечь файл по текущей позиции".
Существенно при некоторых сценариях для сохранения прав доступа.
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38965628
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли в новых виндах ничего не отломали, то запись нуля байт трактуется как "усечь файл по текущей позиции".
Существенно при некоторых сценариях для сохранения прав доступа.
мне это надо для окон и линуксов, ну запись нуля байт равосильно удалению файла, потом всё равно идет запись новых данных
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38965631
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяну запись нуля байт равосильно удалению файлаНе равносильна потому, что:
1. Права доступа;
2. Атомарность.
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38965644
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему так сложно?

вадяimgWriter.write(null, new IIOImage(image, null, null), imgWriteParams);

но приналичии файла xxxx.webp он его не перезаписывает
Документацияwrite(IIOImage image)
Appends a complete image stream containing a single image with default metadata and thumbnails to the output.

Что в общем-то соответствует доке

Первая же ссылка в google ведет на пример в туториале без всех заморочек с ImageWriter'ом
https://docs.oracle.com/javase/tutorial/2d/images/saveimage.html
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38965711
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovвадяну запись нуля байт равносильно удалению файлаНе равносильна потому, что:
1. Права доступа;
2. Атомарность.
я имею ввиду мою ситуацию.
а чес отличается запись нуля байт от записи новых данных?
в моём случае просто не происходит никакой записи в уже существующий файл.
файл не открывается для чтения/записи данные берутся из экселевского файлы (картинки) обрабатываются и записываются. для некоторых возможна перезапись.
вопрос надо рассматривать как изучение вариантов работы с записью файлов. потому как предыдущий вариант делал это...
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38965715
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запись нуля байт это фича, позволяющая не делать отдельную функцию "усечь файл".
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38965786
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid KudryavtsevПочему так сложно?
java сложна, как ни крути
...
Рейтинг: 0 / 0
Пререзаписать файл
    #38966843
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такая конструкция перезаписывает файл
Код: java
1.
2.
3.
4.
try (OutputStream outStream = new FileOutputStream(targetFile)) {
            outStream.write(buffer);
            outStream.flush();
        }
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Пререзаписать файл
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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