创建一个文件并取出特定数据

时间:2016-06-04 14:38:57

标签: android file fileinputstream fileoutputstream

我正在尝试创建一个文件并将数据保存到它,然后我希望能够读取它并且是否可以取出特定数据。

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

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,并且该值是一个String,如果我理解正确的话,每次存储一个。

解析是否应该是一种选择?

1 个答案:

答案 0 :(得分:0)

我目前使用这两种方法来读取和写入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();

    }
}

第二种方法会将您的对象写入内部文件,而不是外部存储器,第一种方法也是读取对象。这里我将对象作为String读取,但这当然取决于您写入文件的对象类型。您可以替换readFromInternalFile的返回方法并将其设为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();

    }
}