powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Правильный алгоритм работы с файлами.
33 сообщений из 33, показаны все 2 страниц
Правильный алгоритм работы с файлами.
    #38060836
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста общий алгоритм для работы с файлами, чтобы ничего не "слетало" и даже если слетало, то мы это контролировали. Нужен общий алгоритм типа создаем файл, проверяем на то-то, то-то. Для чтения и для записи.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38060838
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
redwhite90,

ну, и если не сложно, то напишите какими классами предпочтительнее пользоваться в каких случаях, что устарело...
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38060857
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90чтобы ничего не "слетало" и даже если слетало, то мы это контролировали. Перехватывать исключения.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38060924
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
не выйдет.
Общий алгоритм:
- пишешь функцию Создать файл:
- ставишь виртуальную машину и в нёё 2-3 Оси
- выделяешь минимальную квоту на диске чтобы файл Ось не могла создать по доступному размеру.
- обрабатываешь исключения и прокидываешь из наверх в СЛОЙ:
чтобы ничего не "слетало" и даже если слетало, то мы это контролировали
...
потом тоже самое поставив на файл атрибут в Оси - "только чтение".
и т.д.
(зависит от того что у вас Слетает ))) )
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061048
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Подскажите пожалуйста общий алгоритм для работы с файлами, чтобы ничего не "слетало" и даже если слетало, то мы это контролировали. Нужен общий алгоритм типа создаем файл, проверяем на то-то, то-то. Для чтения и для записи.
Тут 2 варианта.

Оконное приложение. Ты обрабатываешь ошибку класса IOException и на каждую (!) вываливаешь на экран
лопух с сообщением дескыть "Извините - произошла ошибка ввода вывода. Передайте спойлер в техподдержку".
В спойл вываливаешь весь(!) текст исключения со стеком. Пользователь если он не дурак - разберётся что к чему
или позовёт сисадмина или напишет письмо тебе в личку. На этом всё. Никаких других магических действий делать
не надо.

Серверное приложение . (Бины, компоненты, сущности бизнес слоя). Здесь надо думать по смыслу постановки.
Есть документы типа там ТЗ, SLA и прочие регламентирующие условия запуска. Там на 99.9999% предполагается
что твоё приложение работает в сферическом вакууме. Где идеальные диски. Если условия не соблюдаются или
нештатные то ты умываешь руки. Короче не занимаешся вопросом. Для диагностики обрабатываешь IOException
и на каждую (!) ошибку бросаешь logger.error(ex,ex) и делаешь таймаут хотя-бы на 1 минуту. И повторяешь до
бесконечности. Те кому надо почитают логи. Разберуться. Или поймают трап или емейл от этого же логгера.
И сами разберуться. Это когда отъехал или переполнился диск-хранилище с файлами касаемыми твоего приолжения.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061051
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Мой вопрос чуть проще наверное))

Из условий, что мне известны, это:
- надо проверить на exist файл после его создания.
- код закрытия потоков надо помещать в секцию finally

я о такого рода рекомендациях
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061058
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Из условий, что мне известны, это:
- надо проверить на exist файл после его создания.

Это безсмысленно. Тоесть записать в ячейку число и потом навсякий проверить что оно
записалось? Глупо. Если между этими действиями у вас нет длительности транзакции (а ее
нет) то любой другой процесс имеет право взять этот файл и сделать с ним всё что
угодно. Почему нет?

Если хотите чтоб файл никто не трогал то не закрывайте его.
И пока вы владеете объектом FileOutPutStream или RandomAccess то никто у вас
файл не заберёт.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061060
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90- код закрытия потоков надо помещать в секцию finally

Это сложный вопрос. И требует отдельного обсуждения. И что
вы подразумеваете под потоками? Threads? Streams?
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061064
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Я ж говорю - всё просто)
Streams, конечно)
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061138
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90mayton,
Я ж говорю - всё просто)
Streams, конечно)
если твои 2 рекомендации выше - просты, то и выполняй их). В чём проблема?
Тебе выше всё верно описали.
А "правильный" алгоритм - это как?
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061154
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Может ещё какие-то есть.
Просто я написал некоторый код. Мне сказали исправить ошибки(реализовать эти рекомендации) - я сделал - сказали, что ещё что-то есть, но типа сам найди...я не могу найти.

вот код:
Что тут "некрасиво"?
Код: 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.
public class Tester {

    public static void main(String args[]) throws FileNotFoundException, IOException {
        BufferedReader in = null;
        BufferedWriter out = null;
        try {
            File file1 = new File("C:\\Users\\redwhite\\Documents\\NetBeansProjects\\StringTest\\text.txt");
            if (!file1.exists() && file1.canRead()) {
                System.out.println("Input file not found");
                return;
            }
            in = new BufferedReader(new FileReader(file1));
            String tmpStr;
            File file2 = new File("lala.txt");
            out = new BufferedWriter(new FileWriter(file2));
            while ((tmpStr = in.readLine()) != null) {
                out.write(new StringBuilder(tmpStr).reverse() + "\n");
            }
        } finally {
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
        }
    }
}
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061165
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90вот код:
Что тут "некрасиво"?
redwhite90,
пять страниц про файлы и НЕкрасиво
Простой вопрос про finally
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061169
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90, а что будет если убрать эти строки?

Код: java
1.
2.
3.
4.
if (!file1.exists() && file1.canRead()) {
                System.out.println("Input file not found");
                return;
}



Запусти свои тесты и посмотри что изменилось.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061218
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

ничего не поменяется очевидно)
я тут говорю скорее о том, что я, как программист, обязан проконтроллировать
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061224
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90я тут говорю скорее о том, что я, как программист, обязан проконтроллировать
например так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Path file = ...;
try {
    // Create the empty file with default permissions, etc.
    Files.createFile(file);
} catch (FileAlreadyExistsException x) {
    System.err.format("file named %s" +
        " already exists%n", file);
} catch (IOException x) {
    // Some other sort of failure, such as permissions.
    System.err.format("createFile error: %s%n", x);
}


смотря ЧТО контролировать)) - уже целый топик об этом
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061236
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто на С++ например всегда просили делать проверку на isOpen и всё)

ну то есть у меня всё вполне сносно?
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061269
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90mayton,

ничего не поменяется очевидно)
я тут говорю скорее о том, что я, как программист, обязан проконтроллировать
Чел. у тебя код, в котором нет смысла! Ты-же всё равно exception
по протоколу вызова отработаешь.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061272
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

мартышкин труд?
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061279
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90я сделал - сказали, что ещё что-то есть, но типа сам найди...я не могу найти.
в этом проблема.
Тебя учат думать над кодом.
А ты говоришь - найдите мне ошибку.
Сам ищи - говорят ещё так "ошибка в 17 строке".
Ничего личного.
Удачи!
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061284
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё так:
Код: java
1.
функция ЧтобыНеСлетало (Имя файла) - возврат 5 ошибок из Оси



Пробуй, тестируй - пиши.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061310
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90, если тебе сказали землю рыть - то рой.
Если препод хочет чтоб ты напрягся. Напрягись.
Но разработчики так не пишут.

Успехов.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061351
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Спасибо, я так и понял, что меня троллят.
Вообще это курсы при IT компании)
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061356
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Соответственно вопрос, как пишут разработчики?
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061368
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не буду давать от себя советы. Зайди на http://sourceforge.net.
Найди проекты по ключевому слову java. Поскачивай исходники
и просто посмотри. Это пример того как люди пишут.

Бывай.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061635
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И задай мой вопрос инструктору курсов. Что будет если убрать блок проверок.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061835
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто безсмысленно.Осмысленно.
Любая файловая функция может вернуть ошибку. И функция создания файла - не исключение.

P.S. Да, она может вернуть "Уже существует" или "Заблокировано".
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38061981
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, вы именно так пишете код?
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38064667
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Ат ситуацыи завысыт".
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38064721
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну расскажите в какой ситуации вам нужны доп. проверки?
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38066805
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНу расскажите в какой ситуации вам нужны доп. проверки?Человек упомянул, что "вот в сях я ...". Вот там - проверки нужны. Включая экзотику с разделяемым доступом, которая зависит от платформы и всего такого прочего.
И если бы вы сказали "забудь всё, чему тебя учили в институте сях" - были бы правы, т.к. до java7 исключительно доступа к нативному файловому API - просто нет: "Создаётся поток, а остальное - вопрос обработки исключений".
А безапелляционное "бессмысленно" - не вполне корректно.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38070503
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кому интересно - почитайте тут:
http://java.dzone.com/articles/java-7-new-try-resources
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38070515
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Это просто синтаксический сахарок. Перенос инициализации
в scope try-catch.

Ранее эта инициализация всегда раздражала ошибками компилляции в JDK6.
Раздражает еще невозможность игнорировать InterrupedException.
...
Рейтинг: 0 / 0
Правильный алгоритм работы с файлами.
    #38070640
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,
ещё "автоклозбл"
...
Рейтинг: 0 / 0
33 сообщений из 33, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Правильный алгоритм работы с файлами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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