存储文件,基于linux,目前只关心data文件和sdcard。

image.png
image.png

第一位:代表文件的类型(d:文件夹,-:文件,l:挂载某一个文件)
第2-4位:rw-代表的是当前用户的权限
第5-7位:当前用户所在组的其他组员的权限
第8-10位:其他所有的权限。--没有任何权限,r--可读,-w-可写,rw-可读可写

存在手机内存:

1
2
3
4
5
6
7
8
//得到文件对象
File fileDir = context.getFilesDir();

//新建文件夹对象,给对象名字所以传入对象和文件名
File file = new File(fileDir,"xxhuang.text");

//把文件作为参数传给流
FileOutputStream fos = new FileOutputStream(file);

存在sd卡:

1
2
3
4
5
6
7
//getExternalStorageDirectory()得到sd卡的路径文件对象
File sdCard = Environment.getExternalStorageDirectory();

//加上创建的名字
File file = new File(sdCard,"xxhuang.text");

FileOutputStream fos = new FileOutputStream(file);

获得sd卡状态(手机是否有sd卡):

1
Environment.getExternalStorageState();

获得手机内存/sd卡内存状态:

1
Environment.getExternalStorageState()

获得手机内存/sd卡总空间和可用空间:

1
2
3
4
5
6
7
8
//获得磁盘状态对象 ,并传入路径
StatFs statFs = new StatFs(path.getPath());
long blookSize = statFs.getBlockSizeLong(); //获得单个磁盘扇区大小
long blockCount = statFs.getBlockCountLong();//获得扇区总数
long availableBlock = statFs.getAvailableBlocksLong();//获得可用扇区数量

String totalMeory = Formatter.formatFileSize(this, blookSize * blockCount); //总空间
String avaiableMemory = Formatter.formatFileSize(this, blookSize * availableBlock); //可用空间

写文件:

1
2
3
4
5
6
7
8
9
10
11
//私有文件
writeData("private.txt", Context.MODE_PRIVATE);

//可读文件
writeData("read.txt",Context.MODE_WORLD_READABLE);

//可写文件
writeData("write.txt",Context.MODE_WORLD_WRITEABLE);

//可读可写文件
writeData("public.txt",Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void writeData(String fileName , int mode) {
String text = "这是一条文件的内容" + fileName;
try{

FileOutputStream fos= openFileOutput(fileName,mode);
BufferedWriter buffer = new BufferedWriter(new OutputStreamWriter(fos));
buffer.write(text);
buffer.close();

}catch (Exception e){
e.printStackTrace();
}

}