我们在手机上经常会看到过这样一种文件“”文件管理“。我们点进去一看全是一些英文名,乱七八糟的。其实这些就是文件。大家都知道的哈。我们有时候自己在开发的时候也会经常使用文件来存储一些数据。使用File有什么好处呢?在我们卸载我们的软件的时候,我们的手机也会一并把file中保存的数据卸载干净。这样就不用担心软件在手机内残留大量的数据,占用存储空间。但是也有一定的坏处:1、当初储量大的时候会极大地占用内存。2、我们不小心自己手动在手机上clearData后数据会丢失。
创建文件:
File file=new File("/mnt/sdcard/test");
if(!file.exists()){
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
Log.i("info", "文件已经存在");
}
删除文件 file.delete();
文件类相关
1.目录结构。this.getFilesDir().当前程序默认的数据存储目录
2.this.getCacheDir(),默认的缓存文件的存放位置,不太重要的创建使用,内存不足的时候,系统会自动删除app中cache目录的数据
3.this.getDir("myfile",MODE_PRIVATE);/data/data/<包名>/app_myfile,
4.this.getExternalCacheDir(),外部的存储位置,app卸载后会自住删除。
5.如果开发者不遵守不把数据放入data/data/<包名>或者/mnt/sdcard/Android/data/<包名>,卸载不会清除
我们输出一下
Log.i("info", "根目录"+this.getFilesDir().toString());
Log.i("info", "根目录缓存目录"+this.getCacheDir().toString());
Log.i("info", "自定义目录"+this.getDir("my_file", MODE_PRIVATE));
Log.i("info", "外部存储位置"+this.getExternalFilesDir(ACCESSIBILITY_SERVICE));
Log.i("info", "外部缓存目录"+this.getExternalCacheDir());
看一下后台的输出结果:
文件的存储:
我们演示一个例子,看一下文件的读写操作:我们在编辑框中写入数据,保存之后,在结果栏中显示结果
看代码是如何实现的吧:里面都有注释应该能够看懂
public class FileTest extends Activity {
private EditText fileEt;
private Button fileBt;
private TextView fileTx;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_file);
super.onCreate(savedInstanceState);
findViews();
fileBt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//写文件
writeFile(fileEt.getText().toString());
//读文件
String result=readFile();
fileTx.setText(result);
}
});
}
private void findViews() {
fileEt = (EditText)findViewById( R.id.file_et );
fileBt = (Button)findViewById( R.id.file_bt );
fileTx = (TextView)findViewById( R.id.file_tx );
}
//将数据写入
public void writeFile(String et){
try {
FileOutputStream fos=openFileOutput("fdd.txt", MODE_PRIVATE);
fos.write(et.getBytes());
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//读数据从文件中
public String readFile(){
String content = null;
try {
FileInputStream fis=openFileInput("fdd.txt");
//建立一个缓冲区
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//每次1024个字节
byte[] buffer= new byte[1024];
//每次的长度
int len;
while((len=fis.read(buffer))!=-1){//当还有数据的时候
//写入缓冲区
baos.write(buffer,0,len);
}
content=baos.toString();//将缓冲区的数据拿出来
fis.close();
baos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return content;
}
}
我们看到文件存储的过程和之前我们学习JAVA的时候是一样的。