LINUX.ORG.RU
решено ФорумAdmin

[OMG open suse 11.3] сам стирается файл


0

2

Такая тема моя программа на java создает файл. Весит он 1 кб, я это проверяю, резетом тыкаю в сис. блок, перезагружается, а файл уже пустой! ЧЯДНТ? (резет это на случай выкд электричества, в файлике хранятся важные данные для пользователя, чтобы восстановить можно было после загрузки)

Ответ на: комментарий от LongLiveUbuntu

резет это имитация выключения электричества или прочего сбоя. Что делает программа. после каждого изменения нужной мне переменной сохраняется файл с ее значением, при норм выходе из программы файл стирается, при сбойном выходе, типа откл эл-ва, файл остается и загружается при запуске. Так вот после появления моего файлика, я проверяю значение переменной внутри его, имитирую обрыв электричества, потом загружаюсь смотрю файлик (ЗЫ. программа моя еще не стартанула, она не могла затереть ниче) а файлик весит 0 байт, но он есть ))) и дата его создания стала на час отставать примерно

pozitiffcat ★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

кстати у меня еще в проге есть лог, он почемуто не стирается ни строчки

pozitiffcat ★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu
static public void save_state_check_r()
    {
        try
        {
            if(loading_state) return;
            File file = new File(GLOB.paths+"/save_state.dat");
            PrintWriter pw = new  PrintWriter(file);
            for(int i=0;i<mf.check_count;i++)
            {
                try
                {
                    String scan = ((CRow)mf.get_table().getValueAt(i, 4)).SCANCOD[0];
                    String count = ((String)mf.get_table().getValueAt(i, 1)).split(" ")[0];
                    count = count.replace(',', '.');
                    pw.println(scan);
                    pw.println(count);
                    pw.flush();
                }catch(Exception e){CLog.Add("Catch savestate check 2"+e.getMessage());}
            }
            pw.flush();
            pw.close();
        }
        catch(Exception e)
        {
            CLog.Add("Catch savestate check 1"+e.getMessage());
        }
        CLog.Add("Save state check [DONE]");
    }

лог выдает что все кулл, не в одну катчу не выпадает, файл реально записывается, я его проверяю сам gedit-ом

pozitiffcat ★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

мдя! если долго подождать, примерно с 2 минутки ждал, то файл не затирается.. Кто знает сколько времени нужно чтобы файловая система физически записала данные на диск?

pozitiffcat ★★★
() автор топика
Ответ на: комментарий от pozitiffcat

Кто знает сколько времени нужно чтобы файловая система физически записала данные на диск?

Зависит от настроек в /proc/sys/vm/dirty_*.

А лучше сразу после завершения работы твоей программы запустить sync.

Deleted
()
Ответ на: комментарий от LongLiveUbuntu

Я fsync заюзал все круто стало =) спасибо всем

pozitiffcat ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.