2016-06-04 8 views
0

Ich versuche, eine Datei zu erstellen und Daten zu speichern, und dann möchte ich in der Lage sein, es zu lesen und wenn es möglich ist, bestimmte Daten zu entfernen.eine Datei erstellen und bestimmte Daten herausnehmen

Also hier ist mein Code zum Erstellen und Öffnen einer Datei.

public void createFile(View view) throws IOException { 
    String FILENAME = "hello_file"; 
    String string = "hello world"; 
    FileOutputStream fos = openFileOutput(FILENAME,Context.MODE_APPEND); 
    fos.write(string.getBytes()); 
    fos.close(); 
} 

public void openFile(View view) throws IOException{ 
    String FILENAME = "hello_file"; 
    FileInputStream g = openFileInput(FILENAME); 
    System.out.println(g.read()); 
    g.close(); 
} 

Da die read() zurückkehren einen int und der Wert ist ein String, ein Bit zu einer Zeit gespeichert wird, wenn ich richtig verstanden.

Sollte Parsing eine Option sein?

+0

Sie diesen Link als Referenz überprüfen können http://www.tutorialspoint.com/java/io/fileinputstream_read.htm – mgcaguioa

Antwort

0

Ich benutze diese beiden Methoden zur Zeit zu lesen und in eine Datei in Android schreiben:

public String readFromInternalFile(String fileName) throws IOException { 
    InputStream fis = context.openFileInput(fileName); 
    ObjectInputStream ois = new ObjectInputStream(fis); 

    String readData = ois.readObject().toString(); 


    return readData; 
} 



public void writeToInternalFile(String text, String fileName) { 
    try { 
     OutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(text); 
     fos.close(); 
     oos.close(); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 

    } 
} 

die zweite Methode wird das Objekt auf eine interne Datei schreiben, damit nicht auf dem externen Speicher und die erste ist zu lies das Objekt. Hier lese ich das Objekt als String, aber das hängt natürlich vom Objekttyp ab, den Sie in die Datei geschrieben haben. Sie können die Rückkehrmethode des readFromInternalFile ersetzen und es Object machen und das Argument des writeToInternalFile von String text zu Object objectToWrite ändern, damit Sie problemlos jedes Objekt mit derselben Methode in einer Datei lesen und schreiben können.

Also für den universellen Lese- und Schreibmethoden haben Sie:

public Object readFromInternalFile(String fileName) throws IOException { 
    InputStream fis = context.openFileInput(fileName); 
    ObjectInputStream ois = new ObjectInputStream(fis); 

    Object readData = ois.readObject(); 


    return readData; 
} 



public void writeToInternalFile(Object objectToWrite, String fileName) { 
    try { 
     OutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
     ObjectOutputStream oos = new ObjectOutputStream(fos); 
     oos.writeObject(objectToWrite); 
     fos.close(); 
     oos.close(); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 

    } 
} 
+0

ich gesetzt haben die Context.MODE_PRIVATE zu MODE_APPEND, weil ich Daten zu vorhandenen Daten hinzufügen möchte. Aber das scheint nicht zu passieren. Gibt es irgendwelche Schleifen, die gemacht werden müssen? – mogren3000

+0

@alexandermogren gut in diesem Fall schreiben Sie ein Objekt, also wenn Sie etwas zu einer vorhandenen Datei hinzufügen möchten, was Sie tun müssen, ist zuerst lesen Sie die Datei, fügen Sie den Inhalt zu den Exits Daten dann schreiben Sie es erneut. –

Verwandte Themen