Writing strings to text file android

  • Replies:6
  • OpenNot stickiedUnanswered
  • Forum posts: 2

Mar 17, 2016, 4:24:46 PM via Website

I am new to android programming and I am trying to write strings into a text file without overwriting the previous one. It is somehow like a history log of the application. I tried reading online guide but it doesnt seem to write in to my text file. Can anyone advice me on this? My empty text file name logs is inside src/main/assets folder. Everytime the saveText function is called, it successfully prompt the Toast that shows the string of the saveText, so I wonder why it did not write into the logs textfile.

public void saveText(){
    int seconds;
    FileOutputStream outputStream;
    String saveText;
    long elapsedMillis = SystemClock.elapsedRealtime() - mChronometer.getBase();
    seconds = (int) (elapsedMillis / 1000);
    try {
        outputStream = openFileOutput("logs", Context.MODE_PRIVATE);
        saveText = String.valueOf(seconds);
        outputStream.write(saveText.getBytes());
        outputStream.close();
        Toast.makeText(this, saveText, Toast.LENGTH_LONG).show();

    } catch (Throwable t){
        Toast.makeText(this, "Exception: " + t.toString(), Toast.LENGTH_LONG).show();
    }
}

Android Manifest:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".GameActivity" />
    <activity android:name=".EndActivity" />
</application>

Reply
  • Forum posts: 266

Mar 17, 2016, 7:34:17 PM via Website

Hi, your file named "logs" maybe is there: /data/data/your_package_name/files/

— modified on Mar 17, 2016, 7:36:05 PM

Reply
  • Forum posts: 211

Mar 18, 2016, 6:42:46 AM via Website

public static void writeStringToTextFile(String s, String f) {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath()+"/MMDLogs");
dir.mkdirs();
File file = new File(dir, f);
if(!(file.exists())){
try{
file.createNewFile();}
catch(Exception e){
Log.d("file", e.getMessage());
return;}}

    try {
        FileOutputStream f1 = new FileOutputStream(file, true); // True =
                                                                    // Append
                                                                    // to
                                                                    // file,
                                                                    // false
                                                                    // =
        //f1.write(s.getBytes());                                                           // Overwrite
        PrintStream p = new PrintStream(f1);
        p.print(s+System.getProperty("line.separator"));
        p.close();
        f1.close();
        Log.d("file string", s);
        Log.d("file", "file created");
    } catch (FileNotFoundException e) {
        Log.d("file", "file not found");
    } catch (IOException e) {
        Log.d("file", "ioexception");
    }catch (Exception e){
        Log.d("file", "exception");
    }
}

Wenhan Xiao

Reply
  • Forum posts: 14

Mar 18, 2016, 7:35:12 AM via Website

hi are you very good in codes for andriod studio ?

Reply
  • Forum posts: 14

Mar 18, 2016, 8:30:39 AM via Website

can you email me at wenhan999@hotmail.com

Reply
  • Forum posts: 14

Mar 18, 2016, 12:34:21 PM via Website

I have altered the code as described (xml addition) but I still get a write error on writing the file. I have added the mount check and also placed a toast message which shows de path of the SD card on my test device /storage/sd card so I'm pretty shore it's mounted. Then I looked again and saw I placed the lines in the manifest within the application tags... they have to be placed outside. This changed things for the better... thanks for the fine example.

Reply
Recommended by NextPit