2011-02-08 1 views
4

내 응용 프로그램의 로그를 파일에 쓰려고합니다. 줄 끝 부분에 줄을 추가하는 메서드를 만들었습니다.파일에 새로운 줄 쓰기

public static void write2Log(String s){ 
    StringBuilder contents = new StringBuilder(); 
    File root = Environment.getExternalStorageDirectory(); 
    File logFile = new File(root, "testWrite2file.log"); 

    if (root.canWrite()){    
     try { 
      BufferedReader input = new BufferedReader(new FileReader(logFile)); 
      String line = null;        
      while ((line = input.readLine()) != null){ 
       contents.append(line); 
      // contents.append(System.getProperty("line.separator"));    
     } 
     input.close(); 
     FileWriter logWriter = new FileWriter(logFile);     
     BufferedWriter out = new BufferedWriter(logWriter); 
     out.write(contents.toString()+"\r\n"+s);////<---HERE IS MY QUESTION 
     out.close(); 
     } 

     catch (IOException e) { 
      Log.e("test", "Could not read/write file " + e.getMessage()); 
     } 
    } 
} 

모든 것이 새로운 문자 줄보다 작습니다.

내가 사용 시도 :

\r\n 

System.getProperty("line.separator") 

newline() 

하지만 난 그냥 한 줄 :(

어떤 아이디어에 모두가 계속

+0

logWriter.newLine합니다. BufferedWriter의 newLine()도 작동해야합니다. 이상한 – Reno

+0

시도한 newline() 메소드는 무엇입니까? System.getProperty ("line.separator")가 트릭을 수행해야합니다. '\ t'이 탭을 줄까요? 그렇지 않다면 다른 것이 잘못되었습니다. 실제로 해당 코드를 실행하고 있는지 확인하십시오. 하나의 문자열로 모든 것을 감싸고, 파일에 쓰기 전에 터미널/디버그 화면에 문자열을 출력하십시오. 적어도 디버그 화면에서 작동해야합니다. –

+0

[Log] (http://d.android.com/reference/android/util/Log.html)를 알고 있습니까? – Felix

답변

0

public static boolean writeLog(String user , Exception exS) { 



    boolean d = false; 

    try { 

     File root = new File("TVS_log"); 
     if (!root.exists()) { 
      root.mkdirs(); 
     } 
     String name = user + "_" + TimeReporter.getTodayAll() + "_" + "log.txt" ; 
     System.out.println(name); 
     File text = new File(root , name); 
     if (!text.exists()) { 
      text.createNewFile(); 
     } 

     String aggregate = ""; 
     for (StackTraceElement element : exS.getStackTrace()) 
     { 
      BufferedWriter writer = new BufferedWriter(new FileWriter(text)) ; 
      String message = exS.toString() + " - " + element.toString() + "\r\n" ; 
      System.out.println(exS.toString()); 
      System.out.println(element.toString()); 
      aggregate += message; 
      writer.write (aggregate); 
      writer.newLine(); 
      writer.flush(); 
      writer.close(); 
      writer = null; 
     }                 
     if(text.exists()) 
      return text.length() > 0;         
    }catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
    return d; 

} 

TimeReporter 클래스를 시도하고 기능

,210
public class TimeReporter { 

    public static String getTodaysDate() { 

     String d = ""; 
     final Calendar c = Calendar.getInstance(); 
     d = String.format("%02d", c.get(Calendar.YEAR))     
        + String.format("%02d", c.get(Calendar.MONTH) + 1) 
         + String.format("%02d", c.get(Calendar.DAY_OF_MONTH)); 
     return d; 
    } 

    public static String getTodaysTime() { 

     String d = ""; 
     final Calendar c = Calendar.getInstance(); 
     d =  String.format("%02d", c.get(Calendar.HOUR_OF_DAY))    
        + String.format("%02d", c.get(Calendar.MINUTE)) 
         + String.format("%02d", c.get(Calendar.SECOND)); 
     return d; 
    } 

    public static String getTodayAll() {   
     return getTodaysDate() + "_" + getTodaysTime() ; 
    } 



public static String getNow() { 
    final Calendar c = Calendar.getInstance(); 
    String ld = c.get(Calendar.YEAR) + "/" + (c.get(Calendar.MONTH) + 1) 
      + "/" + c.get(Calendar.DAY_OF_MONTH) + " " 
      + String.format("%02d", c.get(Calendar.HOUR_OF_DAY)) + ":" 
      + String.format("%02d", c.get(Calendar.MINUTE)); 
    return ld; 
} 
} 
2

이 시도 : (가) 나를 위해 일한

FileWriter logWriter = new FileWriter(logFile);     
BufferedWriter out = new BufferedWriter(logWriter); 
out.write(contents.toString());////<---HERE IS THE CHANGE 
out.newLine(); 
out.write(s); 
out.close();