0

Android アプリケーションの起動中に SD カードにログ ファイルを作成し、そのファイルにログを書き込みたいのですが、どのようにすればよいですか? 誰かが知っているなら、私を助けてください..

4

3 に答える 3

1

そのためのクラスを作成しました:

public class Logger {

public void appendLog(String text,String filename)
    {       
       File dir = new File("sdcard/YourFolderName");
       if(!dir.exists())
       {
           dir.mkdirs();
       }

       File logFile = new File("sdcard/YourFolderName/"+filename+".txt");

       if (!logFile.exists())
       {
          try
          {
             logFile.createNewFile();

          } 
          catch (IOException e)
          {
             // TODO Auto-generated catch block

             e.printStackTrace();

          }
       }
       try
       {
          //BufferedWriter for performance, true to set append to file flag

          BufferedWriter buf = new BufferedWriter(new FileWriter(logFile, true)); 

          buf.append(text);

          buf.newLine();

          buf.close();

       }
       catch (IOException e)
       {
          // TODO Auto-generated catch block

           e.printStackTrace();

       }
    }

}

メソッドでは、ログの詳細とtxtファイル名を渡すことができます:)

于 2012-04-18T07:14:54.540 に答える
0
private File cacheDir;

      if(android.os.Environment.getExternalStorageState().equals(
           android.os.Environment.MEDIA_MOUNTED))

        cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"MyLog");
     if(!cacheDir.exists())
        cacheDir.mkdirs();

SD カードにディレクトリが作成され、ファイルを作成してそこにログを書き込むことができます。

 File f = new File(cacheDir, filename);   //(File dirPath,String filename)

この行を使用すると、ディレクトリにファイルを作成し、そのファイルにログを書き込むことができます...

これが正しいとマークするのに役立つ場合:)

于 2012-04-18T07:18:23.733 に答える
0

SDカードにログファイルを作成

この方法を使用します。メッセージをこのメソッドに引数として渡すだけです。

   public static void addRecordToLog(String message){
    //Not in release: Log.d("SmartCalendar", message);
    LogRecord logRecord = new LogRecord(Level.INFO, message);
    FileHandler logger = null;
    if (logger == null) {
        try {
            logger = new FileHandler(Environment.getExternalStorageDirectory() + "/Android" + Environment.getDataDirectory() + "/dwivedi/files/log_"  + new Date().getTime() + ".xml");
        } catch (IOException e) {
            Log.e("SmartCalendar", e.toString());
            // it seems that no dirs on sd card
            File dir = new File(Environment.getExternalStorageDirectory() + "/Android" + Environment.getDataDirectory() + "/dwivedi/files/");
            dir.mkdirs();
            try {
                logger = new FileHandler(Environment.getExternalStorageDirectory() + "/Android" + Environment.getDataDirectory() + "/dwivedi/files/log_"  + new Date().getTime() + ".xml");
            } catch (IOException e1) {
                Log.e("SmartCalendar", e1.toString());
                return;
            }
        } catch (Exception e) {
            Log.e("SmartCalendar", e.toString());
            return;
        }
    }
    logger.publish(logRecord);      
}

注: READ および WRITE 外部ストレージの許可を忘れないでください。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
于 2013-08-27T07:36:12.337 に答える