Java IO Исключения - PullRequest
       8

Java IO Исключения

0 голосов
/ 23 марта 2012

Я пытаюсь создать простую программу, которая будет вести текстовый журнал собранных данных. Для этого у меня при запуске программы запускается следующий код (для настройки файла журнала и инструментов для его использования):

File logFile = new File("logs/logFile.txt");
FileWriter fw;
FileReader fr;
BufferedWriter writer;
BufferedReader reader;

public void someMethod(){
    System.out.println(logFile.getAbsolutePath());
    try{
        logFile.createNewFile();
    }catch(Exception e){
        System.err.println("WARNING: CANNOT CREATE FILE");
    }
    try{
        fw = new FileWriter("plugins/Stalker/log.txt");
        fr = new FileReader("plugins/Stalker/log.txt");
        writer = new BufferedWriter(fw);
        reader = new BufferedReader(fr);
    } catch(Exception e){
        System.err.println("ERROR: CANNOT READ OR WRITE TO LOG FILE");
    }
}

Когда я запускаю это, я сталкиваюсь с обоими исключениями. Он не создает ни файл, ни папку (журналы) по пути, указанному в первом println. Путь такой, какой я ожидаю, и я ДОЛЖЕН иметь разрешения на запись для этого каталога (я знаю, что другие программы регулярно записывают журналы и тому подобное в родительский каталог) ... Я немного поработал с файлами раньше, но это было немного, и я в полной растерянности здесь.

С какими проблемами я могу столкнуться? Какие попытки исправить это вы бы предложили?

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

Когда вы работаете с папками, вы должны убедиться, что папка существует.

Для этого вам нужно написать условие до logFile.createNewFile();, чтобы проверить, существует ли папка, потому что createNewFild не будет создавать папки.

Вам нужно немного изменить программу.

File logFileFolder = new File("logs");
File stalkerFolder = new File("plugins/Stalker");
File logFile = new File("logs/logFile.txt");
FileWriter fw;
FileReader fr;
BufferedWriter writer;
BufferedReader reader;

public void someMethod(){
    System.out.println(logFile.getAbsolutePath());
    try{
        if (!logFileFolder.exists()){
             // Create folder if does not exist
             logFileFolder.mkdir();
        }
        logFile.createNewFile();
    }catch(Exception e){
        System.err.println("WARNING: CANNOT CREATE FILE");
    }
    try{
        if (!stalkerFolder.exists()){
             // Create folders if does not exist
             stalkerFolder.mkdirs();
        }
        fw = new FileWriter("plugins/Stalker/log.txt");
        fr = new FileReader("plugins/Stalker/log.txt");
        writer = new BufferedWriter(fw);
        reader = new BufferedReader(fr);
    } catch(Exception e){
        System.err.println("ERROR: CANNOT READ OR WRITE TO LOG FILE");
    }
}
0 голосов
/ 23 марта 2012

Вы можете использовать метод exists, доступный в File, чтобы проверить, существует он или нет.

Если я правильно помню, FileWriter создает файл, если он еще не существует.Проверьте другие конструкторы на предмет добавления.

Однако я думаю, что проблема, с которой вы сталкиваетесь, заключается в том, что вы не закрыли запись файла, прежде чем пытаться прочитать его.поток, вам нужно позвонить close

Кроме того, как упоминал Равиндра Гуллапалли, вам также нужно проверить, существует ли папка, прежде чем пытаться создать файлы.Если нет, вам нужно создать их, используя метод mkdirs .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...