Context für FileWriter

  • Antworten:15
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 408

12.06.2013 21:07:46 via Website

Hallo liebes Forum,
Ich habe das Problem, dass ich mir einen File Writer und Reader gebastelt habe, da man aber zum speichern von datein den context braucht, und ich die datei in einer anderen Activity schreiben will als in der in der sie gelesen werden soll, funtkioniert das mit dem Context nicht.
Kann mir da jemand helfen ?

Es soll in einer AddActivity geschreiben werden und in einer anderen FirstActivtiy in der selben App ausgegeben werden.
(Namen der Activities sind erfunden xD)

Hier noch die Codes:
Von meiner FileWriter Klasse:

###################################################################

package MeineApp...

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class GFileManager {

public static String[] readFile(String filename){

File file=new File(FirstActivity.savepath+filename);
FileReader fr = null;
BufferedReader br;
String outputAsString = null;

try {

fr=new FileReader(file);

} catch (FileNotFoundException e) {

e.printStackTrace();

}

br=new BufferedReader(fr);

try {

outputAsString=br.readLine();

} catch (IOException e) {

e.printStackTrace();

}


String[] outputAsStringArray=outputAsString.split("]}-|-{[");

return outputAsStringArray;

}

public static void writeFile(String filename, String inputByUserAsString){
File file=new File(FirstActivity.savepath, filename);

String[] inputAsStringArray=readFile(filename);
String inputAsString=null;
FileWriter fw = null;
PrintWriter pw;

int i = 0;

while(i<inputAsStringArray.length){

if(inputAsString!=null){
inputAsString=inputAsString+inputAsStringArray[i]+"]}-|-{[";
}else{
inputAsString=inputAsStringArray[i]+"]}-|-{[";
}

i++;

}

inputAsString=inputAsString+inputByUserAsString+"]}-|-{[";


try {

fw=new FileWriter(file);

} catch (IOException e) {

e.printStackTrace();

}

pw=new PrintWriter(fw);

pw.print(inputAsString);

pw.close();
}

}
###################################################################

— geändert am 12.06.2013 22:04:19

MfG,
Antonio Oroz // GLINGOO.COM
MoneyWatcher - Verwalte dein Geld

Mein Gerät: HTC One (M8) Google Play Edition

  • Forum-Beiträge: 408

13.06.2013 15:04:03 via Website

Ich habe aber dann das Problem, dass meine Methode dann nicht static sein kann, sie muss aber static sein, sonst wird mir ein Fehler gezeigt, wenn ich sie ausführe

Beispiel:

String[] a=readFIle(Context,Filename);

Dann kommt de Fehler:
Cannot make a static reference to the non-static method readFile(String) from the type GFileManager

MfG,
Antonio Oroz // GLINGOO.COM
MoneyWatcher - Verwalte dein Geld

Mein Gerät: HTC One (M8) Google Play Edition

  • Forum-Beiträge: 357

13.06.2013 15:28:43 via Website

hm,mmm..

— geändert am 13.06.2013 15:30:24

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

  • Forum-Beiträge: 408

13.06.2013 15:56:30 via Website

Ok hier ist jetzt der ganze Code:
[quote]package com.example.drawerselfmade;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

import android.app.Activity;
import android.content.Context;

public class GFileManager extends Activity {

public String[] readFile(Context context,String filename){

File file=new File(context.getFilesDir(),filename);
FileReader fr = null;
BufferedReader br;
String outputAsString = null;

try {

fr=new FileReader(file);

} catch (FileNotFoundException e) {

e.printStackTrace();

}
br=new BufferedReader(fr);

try {

outputAsString=br.readLine();

} catch (IOException e) {

e.printStackTrace();

}


String[] outputAsStringArray=outputAsString.split("]}-|-{[");

return outputAsStringArray;

}

public static void writeFile(String filename, String inputByUserAsString, Context context){
File file=new File(context.getFilesDir(), filename);

String[] inputAsStringArray=readFile(context,filename);
String inputAsString=null;
FileWriter fw = null;
PrintWriter pw;

int i = 0;

while(i<inputAsStringArray.length){

if(inputAsString!=null){
inputAsString=inputAsString+inputAsStringArray[i]+"]}-|-{[";
}else{
inputAsString=inputAsStringArray[i]+"]}-|-{[";
}

i++;

}

inputAsString=inputAsString+inputByUserAsString+"]}-|-{[";


try {

fw=new FileWriter(file);

} catch (IOException e) {

e.printStackTrace();

}

pw=new PrintWriter(fw);

pw.print(inputAsString);

pw.close();
}

}
[/quote]

Der Fehler:
String[] inputAsStringArray=readFile(context,filename);
Kommt genau dieser Fehler als Meldung bei Eclipse:
Cannot make a static reference to the non-static method readFile(Context, String) from the type GFileManager
Als QuickFix wird mir das angezeigt:
Cnage modifier of readFile to static
Aber das geht ja nicht, sonst funktioniert das mit dem Context nicht mehr.

MfG,
Antonio Oroz // GLINGOO.COM
MoneyWatcher - Verwalte dein Geld

Mein Gerät: HTC One (M8) Google Play Edition

  • Forum-Beiträge: 408

13.06.2013 16:34:16 via Website

Ok ich hab es jetzt static gemacht. aber meine AddActivity geht noch immer nicht.
Hier ist auch der Code:
package com.example.drawerselfmade;

import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class AddActivity extends Activity {

Button buttonConfirm;

@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);

buttonConfirm=(Button) findViewById(R.id.ADD_ButtonConfirm);
buttonConfirm.setOnClickListener(buttonConfirmHandler);

}

OnClickListener buttonConfirmHandler=new OnClickListener(){

@Override
public void onClick(View v) {

EditText txtfld=(EditText) findViewById(R.id.ADD_EditText);
String input= txtfld.getText().toString();

GFileManager.writeFile("FileAusgaben.txt", input, getApplicationContext());


}

};

}

— geändert am 13.06.2013 16:35:28

MfG,
Antonio Oroz // GLINGOO.COM
MoneyWatcher - Verwalte dein Geld

Mein Gerät: HTC One (M8) Google Play Edition

  • Forum-Beiträge: 2.545

13.06.2013 18:50:52 via Website

[quote]Am besten du postes noch mal den kompletten Code, aber bitte zwischen [ code ] - Zeichen.[/quote]

Als ob das in diesem Forum irgendeinen Unterschied machen würde...
Seit Jahren werden hier konsequent alle Anfragen nach Code-Formatierung ignoriert (ich wäre ja schon mit dem Erhalt der Einrückungen zufrieden)
Ob der Code dann monospaced Spaghetti oder "Normalschrift"-Spaghetti ist, macht für mich keinen Unterschied :ph34r:
  • Forum-Beiträge: 408

13.06.2013 18:56:20 via Website

Ich hab das Problem gelöst :D ... Naja ich war zu blöd den BufferdReader zu schließen mit br.close() ; Früher immer gemacht und jetzt nicht ... aber egal danke für die Hilfe ;D

MfG,
Antonio Oroz // GLINGOO.COM
MoneyWatcher - Verwalte dein Geld

Mein Gerät: HTC One (M8) Google Play Edition

  • Forum-Beiträge: 2.545

14.06.2013 00:05:06 via Website

Der Code-Tag ist wirklich mieß. Trotzdem finde ich es immer noch übersichtlicher, wenn der Quelltext hervorgehoben ist und nicht normaler Text wirkt.

Hehe, schon klar, ich wollte zu diesem Thema nur den Cato 'raushängen lassen, vielleicht hilft ja häufige Wiederholung auch hier irgendwann mal :smug:
  • Forum-Beiträge: 357

14.06.2013 09:41:36 via Website

Antonio
Ich hab das Problem gelöst :D ... Naja ich war zu blöd den BufferdReader zu schließen mit br.close() ; Früher immer gemacht und jetzt nicht ... aber egal danke für die Hilfe ;D

und deshelb ging das nicht ?
gibt das nicht sonst nur ne Ressource Leak Warnung ? ^^

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)

  • Forum-Beiträge: 408

14.06.2013 23:27:30 via Website

Irgenwie nicht.

MfG,
Antonio Oroz // GLINGOO.COM
MoneyWatcher - Verwalte dein Geld

Mein Gerät: HTC One (M8) Google Play Edition

  • Forum-Beiträge: 357

15.06.2013 15:09:14 via Website

Antonio
Irgenwie nicht.

kenne ich aber so...

Bildung ist, was übrig bleibt, wenn man vergessen hat, was man gelernt hat. =)