FileLogger.java
上传用户:liming6160
上传日期:2022-06-07
资源大小:785k
文件大小:4k
源码类别:

J2ME

开发平台:

Java

  1. /*
  2.  *    Copyright (C) 2001 - 2007 Mobicom-Kavkaz, Inc
  3.  *    MFRadio - stream radio client for Java 2 Micro Edition
  4.  *    
  5.  *    Visit the project page at: http://mfradio.sourceforge.net
  6.  *
  7.  *    This program is free software; you can redistribute it and/or modify
  8.  *    it under the terms of the GNU General Public License as published by
  9.  *    the Free Software Foundation; either version 2 of the License, or
  10.  *    (at your option) any later version.
  11.  *
  12.  *    This program is distributed in the hope that it will be useful,
  13.  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  *    GNU General Public License for more details.
  16.  *
  17.  *    You should have received a copy of the GNU General Public License
  18.  *    along with this program; if not, write to the Free Software
  19.  *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  20.  *
  21.  *    Java (TM) and all Java (TM)-based marks are a trademark or 
  22.  *    registered trademark of Sun Microsystems, Inc, in the United States 
  23.  *    and other countries.
  24.  */
  25. package ru.mobicomk.mfradio.util;
  26. import java.io.IOException;
  27. import java.io.OutputStream;
  28. import javax.microedition.io.Connector;
  29. import javax.microedition.io.file.FileConnection;
  30. import ru.mobicomk.mfradio.controller.UIController;
  31. /**
  32.  * @author  Roman Bondarenko
  33.  */
  34. public class FileLogger 
  35.     extends MemoryLogger
  36.     implements Runnable {
  37.     // Members /////////////////////////////////////////////////////////////////
  38.     //
  39.     
  40.     //private static final String LOG_FILE_DIR = "file:///C:/other/";   
  41.     private static final String LOG_DIR = "E:";
  42.     private static final String EMUL_LOG_DIR = "root1";
  43.     
  44.     private String logFile_;    
  45.     protected String log2Save_;        
  46.     
  47.     // Public iface ////////////////////////////////////////////////////////////
  48.     //
  49.     
  50.     public FileLogger(UIController controller) {
  51.         super(controller);
  52.         logFile_ = "";
  53.     }
  54.     
  55.    public void flush () {
  56.        synchronized (logBuffer_) {
  57.            log2Save_ = logBuffer_.toString();
  58.            logBuffer_.delete(0, logBuffer_.length());
  59.            addTime();
  60.        }
  61.        String logDir = LOG_DIR;
  62.        if ("wtk-emulator".equals(System.getProperty("device.model"))) {
  63.            logDir = EMUL_LOG_DIR;
  64.        }
  65.        logFile_ = "file:///" + logDir + "/mfr8-" + System.currentTimeMillis() + ".txt";
  66.        Thread t = new Thread(this);
  67.        t.start();
  68.     }    
  69.    
  70.     public void run() {
  71.         FileConnection fConn = null;
  72.         OutputStream os = null;
  73.         String err = null;
  74.         try {
  75.             
  76.             fConn = (FileConnection) Connector.open(logFile_);
  77.             if (!fConn.exists()) {
  78.                 fConn.create();
  79.             }
  80.             if (fConn.canWrite()) {
  81.                 //fConn.truncate(0);
  82.                 os = fConn.openOutputStream();
  83.                 os.write(log2Save_.getBytes());
  84.             } else {
  85.                 err = "Can't write log " + logFile_;
  86.             }
  87.         } catch (SecurityException sex) {
  88.             err = "SecurityException: " + sex.getMessage();
  89.         } catch (IOException ioex) {
  90.             err = "IOException: " + ioex.getMessage();
  91.         } finally {
  92.             if (os != null) {
  93.                 try { os.close();} catch (IOException ex) { ex.printStackTrace(); }
  94.                 os = null;
  95.             }
  96.             if (fConn != null) {
  97.                 try { fConn.close(); } catch (IOException ex) { ex.printStackTrace(); }
  98.                 fConn = null;
  99.             }
  100.         }
  101.         if (err != null) {
  102.             controller_.showError(err, controller_.getCurrDisplayable());
  103.         }
  104.         log2Save_ = "";
  105.     }
  106.     
  107.     // Privates ////////////////////////////////////////////////////////////////
  108.     //
  109.     
  110.     protected void checkSave() {
  111.         if (logBuffer_.length() > MAX_LOG_SIZE) {
  112.             flush();
  113.         }
  114.     }
  115.     
  116. }