2012-01-25 9 views
2

私はアンドロイド電話でテキストファイルを作成し、必要なときにそのファイルを作成できるようにしようとしています。私は明らかに問題を抱えており、誰かが私がこれまで持っているものを見てみることができるかどうかを知るだろう。テキストファイルを作成するAndroid IO

import java.io.BufferedInputStream; 
import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 

public class ViewLog extends Activity { 

    private TextView tv; 
    private static final String TAG = "MEDIA"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv = (TextView) findViewById(R.id.TextView01); 

     CreateExternalLogFile("I am adding something into the text file!"); 
    } 

private void CreateExternalLogFile(String s){ 
    File root = android.os.Environment.getExternalStorageDirectory(); 
    tv.append("\nExternal file system root: "+root); 
    File dir = new File (root.getAbsolutePath() + "/logs"); 
    dir.mkdirs(); 
    File file = new File(dir,"log.txt"); 
    try { 
     FileOutputStream f = new FileOutputStream(file,true); //True = Append to file, false = Overwrite 
     PrintWriter pw = new PrintWriter(f); 
     System.out.println(s); 
     pw.println(s); 
     pw.flush(); 
     pw.close(); 
     f.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     Log.i(TAG, "******* File not found. Did you" + 
         " add a WRITE_EXTERNAL_STORAGE permission to the manifest?"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    tv.append("\nFile written to \n"+file); 


} 
} 

ご協力いただければ幸いです。私はadbを使ってファイルを探しましたが、ファイルは作成されていません。

答えて

2

編集:これは機能します。テスト済みです。

あなたのマニフェストにも:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />があることを確認してください。

package com.example.fileio; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.PrintStream; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.widget.TextView; 

public class FilioActivity extends Activity { 

    private TextView tv; 
    private static final String TAG = "MEDIA"; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     tv = (TextView) findViewById(R.id.TextView01); 

     CreateExternalLogFile("I am adding something into the text file!"); 
    } 

private void CreateExternalLogFile(String s){ 
    File sdCard = Environment.getExternalStorageDirectory(); 
    File dir = new File (sdCard.getAbsolutePath()); 
    dir.mkdirs(); 
    File file = new File(dir, "filename.txt"); 
    tv.append("\nExternal file system root: "+ dir); 
    try { 
     FileOutputStream f = new FileOutputStream(file,false); //True = Append to file, false = Overwrite 
     PrintStream p = new PrintStream(f); 
     p.print(s); 
     p.close(); 
     f.close(); 


    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
     Log.i(TAG, "******* File not found. Did you" + 
         " add a WRITE_EXTERNAL_STORAGE permission to the manifest?"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    tv.append("\nFile written to \n"+file); 


} 
} 
+1

ファイルをSDカードに保存したいのですが、その理由は、.getExternalStorageDirectory()です。 ファイルパスに移動するとき、adb(エミュレータを見て)を使って "/mnt/sdcard/nullwall_logs/log.txt"にあるはずです。何もディレクトリにありません。また、コードはtryブロックを通過し、例外のいずれも入力しません。 – PeterL

+0

コードが正常に機能することをテストしました。幸運、もう助けが必要な場合は私に知らせてください:) –

+0

素晴らしい感謝!何が欠けていたのですか? あなたはまたあなたのマニフェストに次のものがあることを確認しました。何がありますか? :]ありがとう! – PeterL

関連する問題