Read and write images and text files Android

now updated with gui.

main class bms dependant

Summary
class FileOutput2 {
  BMScontrols Bms;
  public PApplet applet;
  public FileWriter output;
  float x, y, w, h;
  public boolean save, onMouseUp, mdown, debug, append = true, appendFile, match, 
    append2, overWrite = true, overWriteOnce = true, writeOnce, writeFile, click, 
    getPermission = true, fileExists, reWrite;
  public int counter=-1, counter2;
  public File file, file2, file3;
  public File[] SDcards ; 
  public String location, filePath, folderPath = "";
  String text = "oioijsofoivnsoindv", absolutePath, ext, fileName, fileContent = "";
  String androidDialogueTitle = "Would you like to overWrite",
         dialogueB1Title = "",dialogueB2Title = "",dialogueBody;
  Permission p;
  Activity activity;
  Context context;
  dialogueBox dbox; 
  TextView msg;
  int msgId;

  FileOutput2() {
  };

  FileOutput2(boolean a, BMScontrols bms) {
    Bms = bms;
    applet = bms.applet;
    p = new Permission(applet, "WRITE_EXTERNAL_STORAGE");
    overWrite = true;
    appendFile = true;
  };

  FileOutput2(BMScontrols bms) {
    Bms = bms;
    applet = bms.applet;
    p = new Permission(applet, "WRITE_EXTERNAL_STORAGE");
    //init();
  };
  //currently unused
  FileOutput2(String location, BMScontrols bms) {
    Bms = bms;
    applet = bms.applet;
    p = new Permission(applet, "WRITE_EXTERNAL_STORAGE");
    setLocation(location);
    init();
  };

  FileOutput2(BMScontrols bms, String location) {
    Bms = bms;
    applet = bms.applet;
    p = new Permission(applet, "WRITE_EXTERNAL_STORAGE");
    setLocation(location);
    init();
  };

  void getAndroidInfo() {
    activity = applet.getActivity(); 
    context = activity.getApplicationContext();
    absolutePath = new String(Environment.getExternalStorageDirectory().getAbsolutePath());
  };

  void init() {
    x = 0;
    y = 0;
    w = applet.width;
    h = applet.height;

    String s1 = "Would you like to overWrite "+fileName+"."+ext+"?";
    float dboxWidth = 120;
    float tSize = 20;
    applet.textSize(tSize);
    float dw = applet.textWidth(s1)+100;
    float dboxHeight = 150;
    float dx = applet.width/2-dw/2;
    float dy = applet.height/2-50/2;

    dbox = new dialogueBox(dx, dy, dw, dboxHeight, s1, bms);
    dbox.$ok(10, 20, dbox.main.w/2-20, dbox.main.h-60, "Yes");
    dbox.$no(dbox.main.w/2+10, 20, dbox.main.w/2-20, dbox.main.h-60, "No");
    dbox.main.setTextSize(tSize);
    dbox.main.setRadius(10);
  };

  void loadStrings() {
    loadFile(context);
  };

  String loadFile(Context context) {

    FileInputStream fis = null;
    if (writeFile) {
      try {
        if (!reWrite)fis = new FileInputStream (new File(file2.getAbsolutePath()));
        else fis = new FileInputStream (new File(file3.getAbsolutePath()));
        
        InputStreamReader isr = new InputStreamReader(fis);
        // READ STRING OF UNKNOWN LENGTH
        StringBuilder sb = new StringBuilder();
        char[] inputBuffer = new char[2048];
        int l;
        // FILL BUFFER WITH DATA
        while ((l = isr.read(inputBuffer)) != -1) {
          sb.append(inputBuffer, 0, l);
          println("write data", inputBuffer, 0, l);
        }
        // CONVERT BYTES TO STRING
        fileContent = sb.toString();

        fis.close();
      }
      catch (Exception e) {
        println("cannot fetch file", e);
      } 
      finally {
        if (fis != null) {

          fis = null;
        }
      }
    }
    return fileContent;
  };

  void open() {
  };

  void close() {
    try {
      output.flush();
      output.close();
    }
    catch(IOException e) {
    }
  };

  void write(String s) {

    if (!overWrite)checkLocation();
    try {

      output = new FileWriter(file2, append);
    }
    catch(IOException e) {
    }
    printWrite(s);
  };

  void writeLn(String s) {
    if (!overWrite)checkLocation();
    try {
      output = new FileWriter(file2, append);
    }
    catch(IOException e) {
    }
    printWriteLn(s);
  };

  void write(String []s) {
    if (!overWrite)checkLocation();
    try {
      output = new FileWriter(file2, append);
    }
    catch(IOException e) {
    }
    printWrite(s);
  };

  void writeLn(String []s) {
    if (!overWrite)checkLocation();
    try {
      output = new FileWriter(file2, append);
    }
    catch(IOException e) {
    }
    printWriteLn(s);
  };

  void printWrite(String s) {
    if (!overWrite)checkLocation();
    try {
      output.append(s);
    }
    catch(IOException e) {
    }
  };

  void printWriteLn(String s) {
    if (!overWrite)checkLocation();
    try {
      output.append(s);
      output.append("\n");
    }
    catch(IOException e) {
    }
  };

  void printWrite(String []s) {
    if (!overWrite)checkLocation();
    try {
      for (int i=0; i<s.length; i++) {
        output.append(s[i]);
      }
    }
    catch(IOException e) {
    }
  };

  void printWriteLn(String []s) {
    if (!overWrite)checkLocation();
    try {
      for (int i=0; i<s.length; i++) {
        output.append(s[i]);
        output.append("\n");
      }
    }
    catch(IOException e) {
    }
  };

  void checkLocation() {
    boolean k = false;
    String s1 = "Would you like to overWrite "+fileName+counter+"."+ext+"?";
    try {
      //
      file = new File(absolutePath, folderPath);
      if (!file.exists()&&counter==-1) {
        file.mkdirs();
        file2 = new File(file, "/"+fileName+"."+ext);
        androidDialogueTitle = file.getAbsolutePath();
        PApplet.println("checking file1", file2);
        if (file2.exists()) {
          counter ++;

          PApplet.println("File Exists");
          //dbox.main.title.label = s1;
        }
      } else if (counter==-1) {
        fileExists = true;
        counter = 0;
        k = true;
      } else k = true;
      if (overWrite&&writeOnce) {
        k=false;
      } else if (overWrite&&!writeOnce&&writeFile) {
        writeOnce = true;
        k = true;
      }
      boolean k1 = false;
      if (writeFile)
        while (k&&counter<100&&!k1) {
          s1 = fileName+counter+"."+ext+"?";
          try { 

            file2 = new File(absolutePath+"/"+folderPath+"/"+fileName+counter+"."+ext);
            file3 = new File(absolutePath+"/"+folderPath+"/"+fileName+(counter)+"."+ext);
            androidDialogueTitle = file3.getAbsolutePath();
            if (file2.exists()) { 
              counter++;
            } else {
              PApplet.println("checking file2", file2);
              //output = new FileWriter(file2, append);
              k = false;
              k1 = true;
              break;
            }
          } 
          catch (Exception e) { 
            PApplet.println("Error while saving file: " + e);
          }
        }
      if (k1||!writeFile) {
        //PApplet.println("file",file);
        //PApplet.println("Fname",folderName);
        //PApplet.println("fileName",fileName);
        //PApplet.println("counter",counter);
        //PApplet.println("ext",ext);
        if (file2==null&&counter<0)file2 = new File(file+"/"+fileName+"."+ext); 
        else if (file2==null)file2 = new File(file+"/"+fileName+"."+ext); 
        if (output==null) {
          //img.save(file+"/"+fileName+counter+"."+ext);

          if (writeFile)output = new FileWriter(file2, append);
          PApplet.println("File saved successfully.");
          //use write or append
        }
      }
      if (reWrite) {
        file2 = new File(file+"/"+fileName+counter+"."+ext); 
        output = new FileWriter(file2, append);
      }
      println("write file", folderPath, fileName, counter, ext);
      if (reWrite)overWrite = true;
    } 
    catch (IOException e) {
      e.printStackTrace();
    }
  };

  void listen() {
    //if(writeFile&&dbox.main.getButton(0).click)checkLocation();
  };


  void setLocation(String s) {
    if (getPermission)getAndroidInfo();
    location = s;
    folderPath = s.substring(0, s.lastIndexOf("/"));
    fileName = s.replace(folderPath+"/", "");
    getExt(fileName);
    PApplet.println("Fname", folderPath);
    PApplet.println("fileName", fileName);
    PApplet.println("counter", counter);
    PApplet.println("ext", ext);
    checkLocation();
    init();
  }

  void getExt(String location) {

    int count = 0;
    fileName = location.substring(0, location.indexOf("."));
    ext = location.replace(fileName, "");
    ext = ext.replace(".", "");
    ext = ext.replace(fileName, "");
  };

  void drawDialogue() {
    fill(0, 100);
    if(!writeFile)rect(0, 0, applet.width, applet.height);
    String s1 = "Would you like to save "+'"'+fileName+"."+ext+'"'+ "?";
    if (!fileExists)dbox.main.title.label = s1;
    
    if (getPermission) {
      dbox.draw();

      if (dbox.main.toggle(0, this, "writeFile"))overWrite = true;
      if (dbox.main.toggle(1, this, "writeFile")) {
        overWrite = false;
        reWrite = true;
      }
      //if(dbox.main.toggle(0)){
      //  println("fout drawd");
      //  writeFile = true;

      //}
      if (writeFile)getPermission = false;
    }
  };


  void dialogBox() {

    msg = new TextView(activity); 
    msg.setBackgroundColor(Color.BLUE);
    msg.setTextSize(32);
    msg.setText(dialogueBody); 
    msg.setGravity(Gravity.CENTER_HORIZONTAL); 
    msg.setTextColor(Color.WHITE); 

    activity.runOnUiThread(new Runnable() {
      public void run() {
        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setView(msg);
        
        androidDialogueTitle += " "+fileName+"."+ext+"?";
        builder.setTitle(androidDialogueTitle);
        builder.setPositiveButton(dialogueB1Title, 
          new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, 
            int which) {
              writeFile = true;
              overWrite = false;
              reWrite = true;
              
          }
        }
        );
        builder.setNegativeButton(dialogueB2Title, 
          new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, 
            int which) {
              writeFile = true;
              overWrite = true;
            //act.finish();
          }
        }
        )
        .show();
      }
    }
    );
  };
  
  void setAndroidDialogue(String s1,String s2){
    dialogueB1Title = s1;
    dialogueB2Title = s2;
    
  };
  
  void setAndroidDialogue(String s1,String s2,String s3){
    androidDialogueTitle = s1;
    dialogueB1Title = s2;
    dialogueB2Title = s3;
    
  };
  
   void setAndroidDialogueTitle(String s1){
    androidDialogueTitle = s1;
  };
  
  void setDialogueColor(){
    
  };

  public boolean click() {
    boolean k = false;
    if (pos()&&applet.mousePressed&&!click) {
      click = true;
      k = false;
    } else if (click&&!applet.mousePressed) {
      k = true;
      click = false;
    }
    return k;
  };

  public  boolean pos(PVector mouse) {
    return mouse.x>x&&mouse.x<x+w&&mouse.y>y&&mouse.y<y+h;
  };

  public  boolean pos() {
    return applet.mouseX>x&&applet.mouseX<x+w&&applet.mouseY>y&&applet.mouseY<y+h;
  };
};

sketch

Summary
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;

import android.app.Activity;
import android.content.Context;
import android.os.Environment;
import android.content.DialogInterface;
import android.graphics.Color;
import android.widget.TextView;
import android.view.Gravity;
import processing.core.PApplet;
import android.app.Activity;
import android.app.AlertDialog;

FileOutput2 f;
BMScontrols bms;

String s2 = "oifoifnowibf";
void settings() {
  size(600, 600, P2D);
};

public void setup() {

  bms = new BMScontrols(this, true, true);
  f = new FileOutput2(bms);
  f.setLocation("notes/test.txt");
  f.setAndroidDialogue("No","Yessss");
};

public void draw() {
  background(255);
//uncomment if using built in android dialogue
  f.drawDialogue();
//comment if using built in android dialogue
  //f.dialogBox();
  if (f.fileContent!=null) {
    fill(0);
    text(f.counter, 20, 10);
    text(f.fileContent, 20, 20);
  } else {
    fill(0);
    text("no file", 20, 20);
  }
};

void mousePressed() {
  if (f.writeFile) {
    f.writeLn(s2+hour()+":"+minute()+":"+second());
    f.close();
    f.loadStrings();
  }
//uncomment to access android built in dialogue
  //if(!f.writeFile)f.dialogBox();
};

Using my own custom lib.

using the android Built in Dialogue Box Class