2016-02-17 1 views
-1

I Невозможно непрерывно записывать файл. Я хочу иметь функцию, которая должна быть добавлена ​​в файл. Но я не мог получить то, что мне нужно. Может кто-нибудь помочь мне, если есть какая-либо ошибка с написанным кодом.Приложение к файлу не работает

void writeLog(String s) 
{ 
    try 
    { 
    String filename= "D:\\Gardening\\Logs.txt"; 
    FileWriter fw = new FileWriter(filename,true); //the true will append the new data 
    fw.write(s+"\n");//appends the string to the file 
    fw.close(); 
    } 
    catch(IOException ioe) 
    { 
    System.err.println("IOException: " + ioe.getMessage()); 
    } 
} 

Ребята, я обнаружил, что проблема в конструктор класса, Полный код здесь

Class Log 
{ 
    Log() 
    { 
     try{ 
     FileWriter fw=new FileWriter("path of file"); 
     } 
     catch(Exception a) 
     { 
     System.err.println(a); 
     } 
    } 
    void writeLog(String s) 
    { 
    try 
    { 
String filename= "D:\\Gardening\\Logs.txt"; 
FileWriter fw = new FileWriter(filename,true); //the true will append the new data 
fw.write(s+"\n");//appends the string to the file 
fw.close(); 
} 
catch(IOException ioe) 
{ 
    System.err.println("IOException: " + ioe.getMessage()); 
} 
} 

Как вызывается в конструкторе снова и снова это происходит так.

+5

Это должно добавить s + \ n к Logs.txt, какие ошибки вы получаете? – nafas

+0

Я пробовал ваш код, и он отлично работает, пожалуйста, объясните больше? – Yazan

+0

«Но я не мог получить то, что мне нужно». Пожалуйста, предоставьте реальное описание проблем/ошибок, которые вы получаете. –

ответ

1

Просто проверил ваш код, и он работает нормально. Можете ли вы опубликовать свой полный код? Также как вы вызываете метод writeLog.

public class Test { 
    void writeLog(String s) { 
     try { 
      String filename = "C:\\Temp\\Logs.txt"; 
      FileWriter fw = new FileWriter(filename, true); 
      fw.write(s + "\n"); 
      fw.close(); 
     } catch (IOException ioe) { 
      System.err.println("IOException: " + ioe.getMessage()); 
     } 
    } 

    public static void main(String[] args) { 
     Test t1 = new Test(); 

     for (int i = 0; i < 5; i++) { 
      t1.writeLog("Hello"); 
     } 

    } 
} 

Этот код создает logs.txt со следующим содержанием -

Hello 
Hello 
Hello 
Hello 
Hello 
1

Попробуйте создать свой FileWriter вне метода, где вы называете его и дать его к методу в качестве второго параметра. (Если вы добавите строки в свой файл в целом проекте, вы можете создать свой FileWriter как singleton). Нет необходимости повторно создавать FileWriter снова и снова.

Кстати, вы должны закрыть FileWriter в блоке finally. Потому что в вашем коде, если исключение произошло до закрытия операции, FileWriter не может быть закрыт. Мой код приведен ниже:

public static void main(String[] args) { 

    FileWriter fw = null; 
      try { 

      fw = new FileWriter(filename,true); 
      writeLog("Your String", fw); 

      } catch (IOException ioe) { 
       System.err.println("IOException: " + ioe.getMessage()); 
      } 
      finally 
      { 
       try { 
       if(fw != null) 
       fw.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      } 


    } 

    static void writeLog(String s , FileWriter fw) 
     { 
      try 
      { 
      fw.write(s+"\n"); 
      } 
      catch(IOException ioe) 
      { 
      System.err.println("IOException: " + ioe.getMessage()); 
      } 

     } 
Смежные вопросы