Где Linux создает файлы, явно в PATH не прописанные?

Тема в разделе "WASM.HEAP", создана пользователем device, 20 авг 2007.

  1. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Приведенный ниже код как ни странно - работает, но где хранится файл - не понятно. Поиск по "/" ничего не дал.:
    Код (Text):
    1. public class MLocalStorage{
    2.  
    3. public Properties p;
    4. public File F;
    5. public FileInputStream fis;
    6. public FileOutputStream fos;
    7.  
    8.  public MLocalStorage(){
    9.  
    10. try{
    11.  
    12.   F = new File ("/LS.prop"); // Этого файла нигде нет в ФС!!!!!
    13.   fis=new FileInputStream(F);
    14.   p=new Properties();
    15.   fos = new FileOutputStream (F);
    16. p.load(fis);
    17. }catch (Exception e){}
    18.  
    19. }
    20.  
    21.  
    22. public String getValue(String key){
    23. String res=null;
    24.     try{
    25.  
    26.     p.load(fis);
    27.     res=p.getProperty(key);
    28.  
    29. }catch (Exception e){}
    30.  
    31. return res;
    32. }
    33.  
    34.  
    35. public void setValue(String key, String value, String comment){
    36. try{
    37. p.setProperty(key, value);
    38. p.store (fos, comment);
    39. }catch( Exception e){}
    40. }
    41.  
    42. }
     
  2. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    device
    программа запускается под root-ом?
     
  3. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    rei3er
    да
     
  4. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    при чем тут никсы, когда это жаба, которую я не знаю, но рискну предположить, что в данном случае файл вообще не создается, т.к. спецификация JDK предусматривает такую возможность:
    http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html
     
  5. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    device

    Строчка F = new File ("/LS.prop"); файла не создает, она его только именует. По идее, если файл не существует, то должно вылетать здесь:
    Код (Text):
    1. fis=new FileInputStream(F);
    так как FileInputStream обязан открыть и читать файл или обвалиться с FileNotFoundException. Под Linux'ом я только ближе к вечеру смогу проверить.
     
  6. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Прописал:
    Код (Text):
    1. }catch (FileNotFoundException e){
    2.  
    3. System.err.println("File not found at:\n"+e);
    4.  
    5. }
    Ничего не вылетает.
    P.S.: В Java5 файл создается, если его нет
     
  7. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    я имел ввиду, что Java создает файл в памяти, но на диск по каким-то причинам не выгружает...
     
  8. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Разобрался, но почему именно так?
    Он создал файл
    .LS.prop. то есть по-умолчанию скрытый нафик да еще и права у этого файла ReadOnly и только для юзера "tmp", коего нет в списках юзеров!
     
  9. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    потому что спецификация отдает это на откуп конкретной реализации. ссылку я уже давал.
    гараний, что файл вообще будет создан - у тебя нет. если тебя это не устраивает - юзай низкоуровневый в/в. это, кстати, одна из причин почему я не программирую на жабе. уж слишком много в ней "сюрпризов"... я столько не понятнууууу....
     
  10. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    device
    Это было бы очень странно, так как тогда получается не нужен метод createNewFile() (не говоря уже о несовместимости со старыми версиями). Под Windows не создается.

    Хм, выглядит как типичный временный файл. Он не убирается после завершения программы?
     
  11. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Вот именно, что НЕТ!
    И вообще, команда rm .LS.prop приводит ACCESS DENIED...
    Только после chmod работает.
     
  12. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    device

    Не знаю, у меня все нормально.. SUSE 10.1, Java 1.5.0_06. Никаких файлов не создает, падает честно на строчке fis=new FileInputStream(F); с FileNotFoundException, как и положено.