AndroidStudio——数据存储之SD卡存储

SaveToSdCardActivity代码:

public class SaveToSdCardActivity extends AppCompatActivity {
    private Button save, read, delete;
    private EditText content;
    private TextView show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_save_to_sd_card);
        save = (Button) findViewById(R.id.save);
        read = (Button) findViewById(R.id.read);
        delete = (Button) findViewById(R.id.delete);
        content = (EditText) findViewById(R.id.content);
        show = (TextView) findViewById(R.id.show);
        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveFile();
            }
        });
        read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                show.setText(readFile());
            }
        });
        delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                removeFile();
            }
        });
    }

    //保存文件到sd卡
    public void saveFile() {
        FileOutputStream fos = null;
        //获取SD卡状态
        String state = Environment.getExternalStorageState();
        //判断SD卡是否就绪
        if (!state.equals(Environment.MEDIA_MOUNTED)) {
            Toast.makeText(this, "请检查SD卡", Toast.LENGTH_SHORT).show();
            return;
        }
        //取得SD卡根目录
        File file = Environment.getExternalStorageDirectory();
        try {
            Log.d("======SD卡根目录:", "" + file.getCanonicalPath().toString());
            //File myFile=new File(file.getCanonicalPath()+"/sd.txt");
            /*
            输出流的构造参数1:可以是File对象  也可以是文件路径
            输出流的构造参数2:默认为False=>覆盖内容; true=>追加内容
             */
            fos = new FileOutputStream(file.getCanonicalPath() + "/sd.txt");
            // fos = new FileOutputStream(file.getCanonicalPath() + "/sd.txt",true);
            //fos=new FileOutputStream(myFile);
            String str = content.getText().toString();
            fos.write(str.getBytes());
            Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fos != null) {
                try {
                    fos.close();
                    fos.flush();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //从SD卡读取文件
    public String readFile() {
        //读的时候要用字符流   万一里面有中文
        BufferedReader reader = null;
        FileInputStream fis = null;
        StringBuilder sbd = new StringBuilder();
        String state = Environment.getExternalStorageState();
        if (!state.equals(Environment.MEDIA_MOUNTED)) {
            Toast.makeText(this, "SD卡未就绪", Toast.LENGTH_SHORT).show();
            return "";
        }
        File root = Environment.getExternalStorageDirectory();
        try {
            fis = new FileInputStream(root + "/sd.txt");
            reader = new BufferedReader(new InputStreamReader(fis));
            String row = "";
            while ((row = reader.readLine()) != null) {
                sbd.append(row);
            }
        } catch (FileNotFoundException e) {
            Toast.makeText(this, "文件不存在", Toast.LENGTH_SHORT).show();
            //e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return sbd.toString();
    }

    //删除SD卡文件
    public void removeFile() {
        String state = Environment.getExternalStorageState();
        if (!state.equals(Environment.MEDIA_MOUNTED)) {
            Toast.makeText(this, "SD卡未就绪", Toast.LENGTH_SHORT).show();
            return;
        }
        //取得SD卡根目录
        File root = Environment.getExternalStorageDirectory();
        File myFile=new File(root+"/sd.txt");
        //File myFile=new File(root,"sd.txt");
        if (myFile.exists()) {
            myFile.delete();
            Toast.makeText(this,"文件已删除",Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(this,"文件不存在",Toast.LENGTH_SHORT).show();
        }
    }
}

activity_save_to_sd_card布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.dell.jreduch008.SaveToSdCardActivity">
    <EditText
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入内容"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true" />

    <Button
        android:id="@+id/save"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="保存"
        android:layout_below="@+id/content"
        android:layout_alignParentStart="true" />

    <Button
        android:id="@+id/read"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="读取"
        android:layout_above="@+id/show"
        android:layout_centerHorizontal="true" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/show"
        android:layout_below="@id/save"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="删除"
        android:id="@+id/delete"
        android:layout_above="@+id/show"
        android:layout_alignParentEnd="true" />
</RelativeLayout>
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中可以使用SQLiteOpenHelper类来实现SQLite数据存储。下面是一个简单的示例: 1. 创建一个继承自SQLiteOpenHelper的类,重写onCreate()和onUpgrade()方法: ```java public class MyDatabaseHelper extends SQLiteOpenHelper { private static final String DB_NAME = "mydatabase.db"; private static final int DB_VERSION = 1; public MyDatabaseHelper(Context context) { super(context, DB_NAME, null, DB_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE mytable (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS mytable"); onCreate(db); } } ``` 2. 在需要使用数据库的Activity中,创建MyDatabaseHelper对象,并调用getWritableDatabase()方法获取可写的数据库对象: ```java MyDatabaseHelper dbHelper = new MyDatabaseHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase(); ``` 3. 使用SQLiteDatabase对象进行数据库操作,例如插入数据: ```java ContentValues values = new ContentValues(); values.put("name", "张三"); values.put("age", 20); db.insert("mytable", null, values); ``` 4. 查询数据: ```java Cursor cursor = db.query("mytable", null, null, null, null, null, null); if (cursor.moveToFirst()) { do { String name = cursor.getString(cursor.getColumnIndex("name")); int age = cursor.getInt(cursor.getColumnIndex("age")); Log.d("MainActivity", "name: " + name + ", age: " + age); } while (cursor.moveToNext()); } cursor.close(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值