今天主要讲一下Android中存储概念,主要分为以下两点:
1.内部存储(Internal Storage)
内部存储会随应用卸载被删除
/data/data/<applicationId>/shared_prefs 数据存储
/data/data/<applicationId>/databases 数据库
/data/data/<applicationId>/files 文件
通过context.getCacheDir()获得
/data/data/<applicationId>/cache 缓存
通过context.getFilesDir()获得
FileOutputStream FileInputStream
主要看代码进行总结整理
package com.example.scrollview.datastorage;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.scrollview.R;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileActivity extends AppCompatActivity {
EditText editText;
Button save,show;
TextView savetv;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shared_peferences);
editText=findViewById(R.id.name);
save=findViewById(R.id.save);
show=findViewById(R.id.show);
savetv=findViewById(R.id.tv_show);
save.setOnClickListener(new onclick());
show.setOnClickListener(new onclick());
}
class onclick implements View.OnClickListener{
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.name:
break;
case R.id.save:
save(editText.getText().toString().trim()); //调用存储方法
break;
case R.id.show:
savetv.setText(read()); //调用读取数据的方法
break;
case R.id.tv_show:
break;
}
}
}
//内部存取数据
private void save(String content){
FileOutputStream fileOutputStream= null; //文件输出流
try {
fileOutputStream = openFileOutput("test.txt",MODE_PRIVATE); //打开文件输出
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
fileOutputStream.write(content.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
try {
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//内部读取数据
private String read(){
FileInputStream fileInputStream= null;
try {
fileInputStream = openFileInput("test.txt");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] buff=new byte[1024];
StringBuilder sb=new StringBuilder("");
int len=0;
while (true){
try {
if (!(fileInputStream.read(buff)>0)) break;
} catch (IOException e) {
e.printStackTrace();
}
sb.append(new String(buff,0,len));
}
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}
2.外部存储(External Storage)
公有目录
pictures movies music....
通过Environment.getExternalStoragePublicDirectory(int type)
私有目录 随应用卸载被删除
/mnt/sdcard/Android/data/data/<applicationId>/cache
/mnt/sdcard/Android/data/data/<applicationId>/files
package com.example.scrollview.datastorage;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.scrollview.R;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileActivity extends AppCompatActivity {
EditText editText;
Button save,show;
TextView savetv;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shared_peferences);
editText=findViewById(R.id.name);
save=findViewById(R.id.save);
show=findViewById(R.id.show);
savetv=findViewById(R.id.tv_show);
save.setOnClickListener(new onclick());
show.setOnClickListener(new onclick());
}
class onclick implements View.OnClickListener{
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.name:
break;
case R.id.save:
save2(editText.getText().toString().trim());
break;
case R.id.show:
savetv.setText(read2());
break;
case R.id.tv_show:
break;
}
}
}
//外部存取数据
private void save2(String content){
FileOutputStream fileOutputStream= null;
try {
//fileOutputStream = openFileOutput("test.txt",MODE_PRIVATE);
File dir=new File(Environment.getExternalStorageDirectory(),"Demo");
if(!dir.exists()){
dir.mkdirs();
}
File file=new File(dir,"test.txt");
if(!file.exists()){
file.createNewFile();
}
fileOutputStream=new FileOutputStream(file);
fileOutputStream.write(content.getBytes());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//外部读取数据
private String read2(){
FileInputStream fileInputStream= null;
try {
File file=new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/Demo","test.txt");
fileInputStream=new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
byte[] buff=new byte[1024];
StringBuilder sb=new StringBuilder("");
int len=0;
while (true){
try {
if (!(fileInputStream.read(buff)>0)) break;
} catch (IOException e) {
e.printStackTrace();
}
sb.append(new String(buff,0,len));
}
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
}