Приведенный ниже код как ни странно - работает, но где хранится файл - не понятно. Поиск по "/" ничего не дал.: Код (Text): public class MLocalStorage{ public Properties p; public File F; public FileInputStream fis; public FileOutputStream fos; public MLocalStorage(){ try{ F = new File ("/LS.prop"); // Этого файла нигде нет в ФС!!!!! fis=new FileInputStream(F); p=new Properties(); fos = new FileOutputStream (F); p.load(fis); }catch (Exception e){} } public String getValue(String key){ String res=null; try{ p.load(fis); res=p.getProperty(key); }catch (Exception e){} return res; } public void setValue(String key, String value, String comment){ try{ p.setProperty(key, value); p.store (fos, comment); }catch( Exception e){} } }
при чем тут никсы, когда это жаба, которую я не знаю, но рискну предположить, что в данном случае файл вообще не создается, т.к. спецификация JDK предусматривает такую возможность: http://java.sun.com/j2se/1.4.2/docs/api/java/io/FileOutputStream.html
device Строчка F = new File ("/LS.prop"); файла не создает, она его только именует. По идее, если файл не существует, то должно вылетать здесь: Код (Text): fis=new FileInputStream(F); так как FileInputStream обязан открыть и читать файл или обвалиться с FileNotFoundException. Под Linux'ом я только ближе к вечеру смогу проверить.
Прописал: Код (Text): }catch (FileNotFoundException e){ System.err.println("File not found at:\n"+e); } Ничего не вылетает. P.S.: В Java5 файл создается, если его нет
Разобрался, но почему именно так? Он создал файл .LS.prop. то есть по-умолчанию скрытый нафик да еще и права у этого файла ReadOnly и только для юзера "tmp", коего нет в списках юзеров!
потому что спецификация отдает это на откуп конкретной реализации. ссылку я уже давал. гараний, что файл вообще будет создан - у тебя нет. если тебя это не устраивает - юзай низкоуровневый в/в. это, кстати, одна из причин почему я не программирую на жабе. уж слишком много в ней "сюрпризов"... я столько не понятнууууу....
device Это было бы очень странно, так как тогда получается не нужен метод createNewFile() (не говоря уже о несовместимости со старыми версиями). Под Windows не создается. Хм, выглядит как типичный временный файл. Он не убирается после завершения программы?
Вот именно, что НЕТ! И вообще, команда rm .LS.prop приводит ACCESS DENIED... Только после chmod работает.
device Не знаю, у меня все нормально.. SUSE 10.1, Java 1.5.0_06. Никаких файлов не создает, падает честно на строчке fis=new FileInputStream(F); с FileNotFoundException, как и положено.