多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > 從零開始學android<數據存儲(3)External Storage外部存儲.三十七.>

從零開始學android<數據存儲(3)External Storage外部存儲.三十七.>

來源:程序員人生   發布時間:2014-09-17 20:15:46 閱讀次數:2621次

所謂的外部存儲External Storage就是將數據文件保存在SD卡上。

1.但是在保存數據時需要先對SD卡的狀態進行判斷。

使用Environment.getExternalStorageState()可以SD卡的運行狀態

分別有一下的狀態

MEDIA_UNKNOWNMEDIA_REMOVEDMEDIA_UNMOUNTEDMEDIA_CHECKINGMEDIA_NOFSMEDIA_MOUNTEDMEDIA_MOUNTED_READ_ONLYMEDIA_SHARED,MEDIA_BAD_REMOVAL, or MEDIA_UNMOUNTABLE.

我們一般使用的是

MEDIA_MOUNTED可操作

2.獲取SD卡的跟目錄

這里可以使用Environment.getExternalStorageDirectory()方法來獲取

3.判斷路徑是否存在,并進行相應操作

使用file.getParentFile().exists()來判斷文件路徑是否存在,如果不存在就創建

file.getParentFile().mkdir();

4.使用outputstream,Writer,printstream等方法進行數據的寫入操作


5.文件的讀取方法同上



XML文件


<span style="font-size:18px;"><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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="106dp" android:text="保存SD卡文件" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="讀取SD卡文件" /> </RelativeLayout> </span>


JAVA文件

<span style="font-size:18px;">package com.example.externalstorage; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.PrintStream; import java.util.Scanner; import android.os.Bundle; import android.os.Environment; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { private Button saveData, getData; public static final String FILENAME = "flyou.dat";// 文件名 public static final String FILEDIR = "myFile";// SD卡下的文件路徑 private PrintStream print;// 初始化打印流 private Scanner input;// 初始化輸入流 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 實例化按鈕 saveData = (Button) this.findViewById(R.id.button1); getData = (Button) this.findViewById(R.id.button2); // 儲存文件到SD卡 saveData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 獲取sd卡的狀態并判斷是否可用 String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { // 獲得Sd卡跟目錄 String SDpath = Environment.getExternalStorageDirectory() .toString(); // 拼湊完整的文件地址 String path = SDpath + File.separator + FILEDIR + File.separator + FILENAME; // System.out.println(path); // 獲得File對象 File file = new File(path); // 判斷路徑是否存在入不存在則自動創建 if (!file.getParentFile().exists()) { file.getParentFile().mkdir(); } try { // 使用打印流重定向寫入位置,向文件內寫入數據 print = new PrintStream(file); print.print("這是使用打印流在SDka上存取的數據文件"); print.println(" 第二行數據");// 在文件中默認" "為換行符 } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { // 關閉打印流 Toast.makeText(MainActivity.this, "文件保存成功,文件位置:"+path, 2).show(); print.close(); } } } }); // 讀取文件 getData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { String SDpath = Environment.getExternalStorageDirectory() .toString(); String path = SDpath + File.separator + FILEDIR + File.separator + FILENAME; File file = new File(path); try { // 創建SCanner重寫輸出地址為文件 input = new Scanner(file); // 判斷是否有下一行數據 while (input.hasNext()) { String info = (String) input.next(); // 根據土司顯示讀取到的數據 Toast.makeText(MainActivity.this, info, 2).show(); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { input.close(); } } } }); } } </span>

最后還必須給android工程配置權限

android.permission.WRITE_EXTERNAL_STORAGE






將文件導出后用記事本打開


NOTE:

如果只進行文件的讀取操作,需要配置android.permission.READ_EXTERNAL_STORAGE

如果同時進行讀取操作則只需進行配置android.permission.WRITE_EXTERNAL_STORAGE就可以了


下節預報:Sqlite數據庫存儲



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产免费福利体检区久久 | 久久99精品久久久久久综合 | 久久久久综合国产 | 成人免费淫片95视频观看网站 | 国产一二三区在线 | 国产精品久久久久久搜索 | 香港黄页精品视频在线 | 羞羞影院免费观看网址在线 | 国产高清国内精品福利99久久 | 最近中文字幕无吗高清视频 | 日本free护士videosxxxx动漫 | 一区二区视频在线播放 | 国产一区亚洲 | 亚洲欧美激情精品一区二区 | 欧美成人吃奶高清视频 | 精品国产一区二区三区国产馆 | 国产高清免费不卡观看 | 美女啊啊啊 | 手机在线看福利 | 日韩精品亚洲精品485页 | 国产成+人欧美+综合在线观看 | 男人天堂亚洲天堂 | 亚洲精品久久久久久久网站 | 青青青青手机在线视频观看国产 | 天天综合视频网 | 天天躁夜夜燥2021 | 国产亚洲精品热视频在线观看 | 手机在线免费视频 | 欧美特级淫片 | 亚洲欧美日韩国产综合久 | 欧洲区二区三区四区 | 玖玖五月 | 欧美成人网在线综合视频 | 久久精品看片 | 一区二区三区四区无限乱码在线观看 | 日韩欧美国产精品第一页不卡 | 武则天全黄肉体毛片免费看 | 亚洲精品综合一区二区三区在线 | www.欧美在线| 亚洲乱码一二三四五六区 | 五月天精品视频播放在线观看 |