package com.letv.watchball.utils; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.StringReader; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.os.Environment; public class LetvLogTool { private final String PATH = Environment.getExternalStorageDirectory() + "/letvWatchBall/PushLog/"; private final String FILE_NAME = "push.log"; // private final String PUSH_FILE_NAME = "push.log"; private File dir = new File(PATH); private File file = null; private final int POOL_SIZE = 3; private int cpuNums = Runtime.getRuntime().availableProcessors(); private ExecutorService executor = Executors.newFixedThreadPool(cpuNums * POOL_SIZE); private static LetvLogTool mLetvLogTool = null; public synchronized static LetvLogTool getInstance() { if (mLetvLogTool == null) { mLetvLogTool = new LetvLogTool(); } return mLetvLogTool; } public void log(String data) { if (!LetvUtil.sdCardMounted()) { return; } if (!dir.exists()) { dir.mkdirs(); } if (file == null) { file = new File(dir, FILE_NAME); } executor.execute(new Handler(data)); } public void log(String data, String fileName) { if (!LetvUtil.sdCardMounted()) { return; } File dir = new File(PATH); if (!dir.exists()) { dir.mkdirs(); } if (file == null || (file != null && !file.getName().equalsIgnoreCase(fileName))) { file = new File(dir, fileName); } executor.execute(new Handler(data)); } class Handler implements Runnable { private String data; public Handler(String data) { this.data = data; } @Override public void run() { synchronized (file) { BufferedReader stringReader = null; FileWriter fileWriter = null; try { stringReader = new BufferedReader(new StringReader(data)); fileWriter = new FileWriter(file, true); String line = null; while ((line = stringReader.readLine()) != null) { fileWriter.write(line); fileWriter.write("\r\n"); } stringReader.close(); fileWriter.flush(); fileWriter.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { stringReader.close(); } catch (IOException e) { e.printStackTrace(); } } } } } }