Android10 读取和写入手机内部存储
生活随笔
收集整理的這篇文章主要介紹了
Android10 读取和写入手机内部存储
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先需要明確:對于高版本的Android系統(tǒng),內部存儲和外部存儲的理解是和常識相悖的。外部存儲其實就是我們手機的內部存儲(你手機那32,64,128和256G);
其次:在Android10后,對權限的設置進一步改變了。因此,如果還是和低版本一樣申請權限,是不能操作內部存儲的。
第一,申請權限
舊版本的權限申請一般如下,當然這部分還是要
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions"></uses-permission><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>如果要真的可以操作內部存儲,還需要如下代碼:
android:requestLegacyExternalStorage="true"位置在見如下示例:?
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.testandroid"><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"tools:ignore="ProtectedPermissions"></uses-permission><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission><applicationandroid:requestLegacyExternalStorage="true"android:windowSoftInputMode="adjustUnspecified|stateHidden"android:allowBackup="true"android:icon="@mipmap/show"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:screenOrientation="portrait"android:theme="@style/AppTheme"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>第二,開始操作內部存儲
判斷內部存儲是否可讀寫:
//保存歷史記錄,判斷SDcard是否存在并且可讀寫if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {System.out.println("成功!"); }判斷路徑是否存在,不存在則新建:
File Folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), "data");if (!Folder.exists()){boolean mkdirs = Folder.mkdirs();if (!mkdirs) {Log.e("TAG", "文件夾創(chuàng)建失敗");} else {Log.e("TAG", "文件夾創(chuàng)建成功");}}讀取txt文件:
String message = ""; String sdCardDir = Environment.getExternalStorageDirectory().getAbsolutePath(); File saveFile = new File(sdCardDir + "/data/", "history.txt"); try {InputStreamReader fileReader = new InputStreamReader(new FileInputStream(saveFile), "utf-8");BufferedReader fp = new BufferedReader(fileReader);String line = null;while ((line = fp.readLine()) != null) {message += line + "\n";}fp.close(); } catch (FileNotFoundException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); }寫入到txt文件:這里每次添加到txt的最開始位置。因此是覆蓋寫入,先讀取所有的文件存在message變量中,然后添加message到strview變量中覆蓋寫入txt
如果是在txt末尾添加,將FileOutputStream(saveFile,false),"UTF-8")設為FileOutputStream(saveFile,true),"UTF-8")
try {//outStream = new FileOutputStream(saveFile,true);//寫入數(shù)據(jù)BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(saveFile,false),"UTF-8"));//獲取當前時間Date date = new Date();SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年-MM月dd日-HH時mm分ss秒 E");String sim = dateFormat.format(date);String strview=sim+outputdata.getText().toString()+"\n"+message; // byte[] b=strview.getBytes(); //字符->字節(jié)==編碼writer.write(strview);writer.close();writer.flush(); } catch (FileNotFoundException e) {e.printStackTrace(); } catch (IOException e) {e.printStackTrace(); }?
?
總結
以上是生活随笔為你收集整理的Android10 读取和写入手机内部存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Day10QRadiobutton202
- 下一篇: 同花顺行情服务器在哪个文件夹,同花顺的文