创建文件并取出特定数据

create a file and take out specific data

我正在尝试创建一个文件并将数据保存到其中,然后我希望能够读取它,如果可能的话,我想取出特定数据。

这是我创建和打开文件的代码。

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();
}

因为 read() 返回一个 int 值是一个字符串,如果我理解正确的话,它一次存储一位。

解析应该是一个选项吗?

我目前使用这两种方法读写android中的一个文件:

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();

    }
}

第二种方法会将您的对象写入内部文件,而不是外部存储,第一种方法也是读取对象。在这里,我将对象作为字符串读取,但这当然取决于您写入文件的对象类型。您可以替换 readFromInternalFile 的 return 方法并使其成为 Object 并将 writeToInternalFile 的参数从 String text 更改为 Object objectToWrite 所以你可以使用相同的方法轻松地读取和写入任何对象到文件。

因此,对于通用读写方法,您将拥有:

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();

    }
}