您的位置:首页 > 运维架构

Android中 File 存储(openFileOutput/openFileInput)

2017-03-30 17:10 561 查看

File 存储

在上一篇的博文中说到了SharedPreferences中提到了SharedPreferences局限性很大,只能存储Java基础数据,所以在某些时候它并不能满足我们的需求,有时候就需要用File存储了。

FileInputStream openFileInput(String name) 对应的是文件输入流
FileOutputStream openFileOutput(String name, int mode) 对应的是输出流


在输出流中的mode模式是说指定打开文件的模式,可以理解为你的数据权限,有以下几种:

MODE_PRIVATE :数据只能被本程序读和写
MODE_WORLD_READABLE :数据可以被其他程序读取,但是不能被写入
MODE_WORLD_WRITABLE :数据可以被其他程序读、写
MODE_APPEND :以追加的方式打开文件,可以向里面追加内容


ok,用一个小例子来说明一下:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;

public class MainActivity extends AppCompatActivity {
//  write
private Button bt1;
//  read
private Button bt2;
private EditText text;
private TextView view;

final String FILE_NAME = "fileSave";
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

bt1 = (Button) findViewById(R.id.button);
bt2 = (Button) findViewById(R.id.button2);

text = (EditText) findViewById(R.id.editText);
view = (TextView) findViewById(R.id.textView);

bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
write(text.getText().toString());
text.setText("");
}
});

bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
view.setText(read());
}
});
}

public String read() {
try {
//            打开文件输入流,对应的文件名要绑定
FileInputStream inputStream = openFileInput(FILE_NAME);
byte[] buff = new byte[1024];
int hasread = 0;
StringBuilder stringBuilder = new StringBuilder("");
//            读取文件的内容
while ((hasread = inputStream.read(buff)) > 0)
stringBuilder.append(new String(buff, 0, hasread));
//            关闭流并且返回数据
inputStream.close();
return stringBuilder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;

}

public void write(final String content) {
try {
//            打开文件的输出流,方式我们定义为追加
FileOutputStream outputStream = openFileOutput(FILE_NAME, MODE_APPEND);
PrintStream printStream = new PrintStream(outputStream);
//            content就是我们要追加的内容,输入之后要关闭流
printStream.print(content);
printStream.close();
} catch (Exception e) {
e.printStackTrace();
}

}
}


在我们的布局文件中就是简单的设置了两个 按钮,一个输入框,一个文本框,来看下成果



点击了读写按钮之后的结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐