導航:首頁 > 操作系統 > android文件存儲讀取

android文件存儲讀取

發布時間:2025-02-13 17:14:49

A. 數據存儲和讀取該怎麼實現

android應用開發中,給我們提供了5種數據的存儲方式
1 使用SharedPreferences存儲數據
2 文件存儲數據
3 SQLite資料庫存儲數據
4 使用ContentProvider存儲數據
5 網路存儲數據
不同的業務邏輯,或者需求,用不同的實現方式,以下是這幾中數據存儲方式的說明用及法:

第一種: 使用SharedPreferences存儲數據
SharedPreferences是Android平台上一個輕量級的存儲類,主要是保存一些常用的配置比如窗口狀態,一般在Activity中 重載窗口狀態onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常規的Long長 整形、Int整形、String字元串型的保存。
以下為示例代碼:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

//獲取SharedPreferences對象
Context ctx = MainActivity.this;
SharedPreferences sp = ctx.getSharedPreferences("SP", MODE_PRIVATE);
//存入數據
Editor editor = sp.edit();
editor.putString("STRING_KEY", "string");
editor.putInt("INT_KEY", 0);
editor.putBoolean("BOOLEAN_KEY", true);
editor.commit();

//返回STRING_KEY的值
Log.d("SP", sp.getString("STRING_KEY", "none"));
//如果NOT_EXIST不存在,則返回值為"none"
Log.d("SP", sp.getString("NOT_EXIST", "none"));
}
}

第二種: 文件存儲數據
關於文件存儲,Activity提供了openFileOutput()方法可以用於把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。
文件可用來存放大量數據,如文本、圖片、音頻等。
默認位置:/data/data/ >/files/***.***。
代碼示例:
public void save(){
try {
FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
return;
}
catch (IOException e){
return ;
}
}

第三種: SQLite資料庫存儲數據
SQLite是輕量級嵌入式資料庫引擎,它支持 SQL 語言,並且只利用很少的內存就有很好的性能。此外它還是開源的,任何人都可以使用它。許多開源項目((Mozilla, PHP, Python)都使用了 SQLite。
SQLite 由以下幾個組件組成:SQL 編譯器、內核、後端以及附件。
SQLite 通過利用虛擬機和虛擬資料庫引擎(VDBE),使調試、修改和擴展 SQLite 的內核變得更加方便。
讀取文件示例:

public void load(){
try {
FileInputStream inStream=this.openFileInput("a.txt");
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while((length=inStream.read(buffer))!=-1) {
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
text.setText(stream.toString());
Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e){
return ;
}
}

第四種 使用ContentProvider存儲數據 ContentProvider其實也是通過資料庫的方式來存儲數據的,因此這里不再做詳細介紹

第五種 網路存儲數據 也就是說將數據保存在伺服器,android上只需要通過httpclient發起一個請求,向伺服器獲取數據即可
火台,驛馬,電報機,電話等。人類儲存信息的工具有:牛骨﹑竹

B. 安卓無法讀取文件夾怎麼辦

當提示「無法訪問文件,建議前往安卓存儲訪問框架查看文件」時,通常表示該應用沒有獲得足夠的許可權來直接訪問手機的文件存儲。用戶需要通過安卓的存儲訪問框架來授權訪問。
1. 安卓許可權系統:安卓操作系統為了保護用戶的隱私和數據安全,實施了一套許可權系統。應用需要用戶的明確許可才能獲得某些敏感許可權,如訪問照片、文件或攝像頭等。
2. 存儲訪問框架(Storage Access Framework, SAF):從安卓10(API級別29)開始,Google引入了SAF作為訪問外部存儲(例如,SD卡或設備上的共享存儲空間)的首選方法。SAF提供了一個統一的界面,讓用戶可以方便地瀏覽和選擇文件,而不需要應用直接訪問文件系統的許可權。
3. 為什麼使用SAF:使用SAF的好處是,它可以讓用戶更加細粒度地控制應用對文件的訪問。通過SAF,用戶可以選擇只讓應用訪問特定的文件或文件夾,而不是整個外部存儲。這增加了數據的安全性。
4. 如何使用SAF:當應用嘗試訪問文件並收到上述提示時,用戶應該點擊提示中的鏈接或按鈕,這將打開SAF界面。然後,用戶可以瀏覽到所需的文件或文件夾,並授權應用訪問它。一旦授權,應用就可以讀取或修改這些文件,直到用戶撤銷許可權。
例如,假設有一個圖片編輯應用想要訪問用戶的照片來進行編輯。如果應用沒有獲得直接的文件訪問許可權,它會提示用戶使用SAF。用戶隨後會打開SAF,找到包含所需照片的文件夾,並授權應用訪問。之後,圖片編輯應用就可以讀取和編輯這些照片了。
總之,當收到「無法訪問文件,建議前往安卓存儲訪問框架查看文件」的提示時,用戶需要通過SAF來授權應用訪問特定的文件或文件夾。這是安卓為了保護用戶隱私和數據安全而實施的一種安全措施。

C. android怎麼讀取sd卡中的文件

sd卡根目錄是external_sd:

1.若將手機中的文件與外置SD卡互相轉移,請操作:

2.若是將存儲在話機中的多媒體文件移動到SD卡中:我的文件-所有文件-sdcard0-查找需要移動的文件夾-長按住不鬆手-移動至(若沒有此菜單,請點擊菜單鍵-移動)-返回到external_sd-點擊「移動到此處」。反之亦然。

3.對於手機不支持軟體搬家,是因為沒有root,可以先使手機軟體獲得root許可權,但是也有說法root容易引起手機死機,系統崩潰現象,畢竟手機root許可權基本都是藉助第三方軟體來完成

3.有的軟體都是獲得了手機的root許可權,可以多嘗試幾種軟體搬家

D. Android開發之如何讀寫文件

【轉】

首先介紹如何存儲數據,顯然,要將數據從應用中輸出到文件中,必須得到一個輸出流outPutStream,然後往輸出流中寫入數據,在這里Android自帶了一個得到應用輸出流的方法

FileOutputStream fos =context.openFileOutput(「yuchao.txt」,Context.MODE_PRIVATE); (1)

其中第一個屬性為文件名,第二個屬性為讀寫模式(有關讀寫模式的說明下面將詳細闡述),

然後在文件輸出流fos中便可以寫入數據

Fos.write(「Hi,」I』m Chao Yu!」.getBytes());

用完文件輸出流之後記得關閉

fos.close();

這樣,在/data/data/packageName/file目錄下就生成了一個文件名為yuchao.txt的文件,文件中的內容為」 Hi,I』m Chao Yu!」

有關(1)中讀寫模式其實就是制定創建文件的許可權以及在讀寫的時候的方式,Android中提供了以下幾種讀寫模式

Context.MODE_PRIVATE = 0

該模式下創建的文件其他應用無權訪問,並且本應用將覆蓋原有的內容

Context.MODE_APPEND = 32768

該模式下創建的文件其他應用無權訪問,並且本應用將在原有的內容後面追加內容

Context.MODE_WORLD_READABLE = 1

該模式下創建的文件其他應用有讀的許可權

Context.MODE_WORLD_WRITEABLE = 2

該模式下創建的文件其他應用有寫的許可權

如果需要將文件設置為外部應用可以讀寫,可將讀寫模式設置為Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE

一般情況下,各個應用維護的數據都在一個特定的文件夾中,即上面所提到的/data/data/packageName/file(存在於手機存儲中),但手機內存畢竟有限,所以有些情況下,我們需要往SD卡中寫入數據文件,這其實和普通的java web 應用步驟一樣,都是先創建特針對特定目錄特定文件的輸出流,然後往輸出流中寫數據,這里要注意一個方法,就是獲取SD卡根目錄的方法,隨著Android系統不斷升級,SD卡的根目錄隨時都有可能改變,Android中得到SD卡根目錄的方法是

File sdCardDir = Environment.getExternalStorageDirectory();

然後就可以進行下面的步驟

File saveFile = new File(sdCardDir, 「yuchao.txt」);

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("Hi,I』m ChaoYu".getBytes());

outStream.close();

值得注意的是,在往SD卡中寫數據的時候,健壯的代碼必須考慮SD卡不存在或者防寫的情況,故在寫入之前,先做判斷

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

……

}

接著,我們來學習下我們的應用程序如何讀取文件中的數據,其實就是寫的逆向過程

若要讀取應用程序默認維護的文件(即/data/data/packageName/file目錄下的文件),首先得到文件輸入流

FileInputStream istream = this.context.openFileInput(「yuchao.txt」);

然後在內存中開辟一段緩沖區

byte[] buffer = new byte[1024];

然後創建一個位元組數組輸出流

ByteArrayOutputStream ostream = new ByteArrayOutputStream();

讀出來的數據首先放入緩沖區,滿了之後再寫到字元輸出流中

while((len=istream.read(buffer))!=-1){

ostream.write(buffer, 0, len);

}

最後關閉輸入流和輸出流

istream.close();

ostream.close();

將得到的內容以字元串的形式返回便得到了文件中的內容了,這里的流操作較多,故以一張圖片來說明,見圖1

return new String(ostream.toByteArray());

從SD卡中讀取數據與上述兩個步驟類似,故不再贅述,留給讀者自己思考

如在開發過程中進行SD卡地讀寫,切忌忘了加入許可權

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

至此,Android系統中有關文件數據的讀寫介紹完畢。

閱讀全文

與android文件存儲讀取相關的資料

熱點內容
pythoncmd換行 瀏覽:374
linux取消行號 瀏覽:353
安卓原生系統官網是什麼 瀏覽:444
底部主圖源碼 瀏覽:878
伺服器崩了有什麼提示 瀏覽:780
遠程海康伺服器用什麼瀏覽器 瀏覽:232
解壓報紙圖片 瀏覽:956
python微信公眾號開發平台 瀏覽:895
知識付費網站java源碼 瀏覽:255
方舟怎麼做命令管理 瀏覽:849
linux流量異常 瀏覽:675
單片機如何給電腦加密碼 瀏覽:519
如何刪掉多餘的伺服器 瀏覽:220
c編程演算法 瀏覽:833
堵車如何緩解壓力 瀏覽:17
喜鵲快貸app怎麼了 瀏覽:263
海龜編輯器積木編程怎麼安裝 瀏覽:185
程序員理發店生意怎麼樣 瀏覽:603
程序員羅技 瀏覽:180
軟考初級程序員課程2021下載 瀏覽:491