2012-01-25 2 views
2

Я пытаюсь сделать текстовый файл на телефоне Android и иметь возможность заполнять его, когда это необходимо. Очевидно, у меня проблемы, и я увижу, сможет ли кто-нибудь взглянуть на то, что у меня есть.создание текстовых файлов 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(); При перемещении к файловому пути он должен находиться в «/mnt/sdcard/nullwall_logs/log.txt» с помощью adb (просматривая эмулятор) ничего не находится в каталоге. Кроме того, код проходит через блок try и не вводит никаких исключений. – PeterL

+0

Просто отредактировал мое сообщение, протестированное, чтобы убедиться, что код работает. Удачи, дайте мне знать, если вам нужна дополнительная помощь :) –

+0

Огромное спасибо! Что мне не хватало? Вы также сказали, что у вас есть: в вашем манифесте. Есть то, что? :] Благодаря! – PeterL

Смежные вопросы