国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Android - Android應(yīng)用開發(fā)中數(shù)據(jù)的保存方式總結(jié)

Android應(yīng)用開發(fā)中數(shù)據(jù)的保存方式總結(jié)

2021-06-19 17:26時光微涼 Android

這篇文章主要介紹了Android應(yīng)用開發(fā)中數(shù)據(jù)的保存方式總結(jié),包括對ROM、SD卡、SharedPreference這三種方式實現(xiàn)的核心代碼的精選,需要的朋友可以參考下

一、保存文件到手機(jī)內(nèi)存

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
   * 保存數(shù)據(jù)到手機(jī)rom的文件里面.
   * @param context 應(yīng)用程序的上下文 提供環(huán)境
   * @param name 用戶名
   * @param password 密碼
   * @throws exception
   */
public static void savetorom(context context, string name , string password) throws exception{
    //file file = new file("/data/data/com.itheima.login/files/info.txt");
    file file = new file(context.getfilesdir(),"info.txt");//該文件在data下的files文件夾下getcachedir()在cache文件夾下 文件大小不要超過1mb
    fileoutputstream fos = new fileoutputstream(file);
    string txt = name+":"+password;
    fos.write(txt.getbytes());
    fos.flush();
    fos.close();
  }
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
   * 獲取保存的數(shù)據(jù)
   * @param context
   * @return
   */
public static map<string,string> getuserinfo(context context) {
    file file = new file(context.getfilesdir(),"info.txt");
    try {
      fileinputstream fis = new fileinputstream(file);
      //也可直接讀取文件string result = streamtools.readfromstream(fis);
      bufferedreader br = new bufferedreader(new inputstreamreader(fis));
      string str = br.readline();
      string[] infos = str.split(":");
      map<string,string> map = new hashmap<string, string>();
      map.put("username", infos[0]);
      map.put("password", infos[1]);
      return map;
    } catch(exception e) {
 
      e.printstacktrace();
      return null;
    }
 
  }
//最后可以直接調(diào)用上面的方法讀取信息
map<string, string> map = getuserinfo(this);
if(map!=null){
textview.settext(map.get(“username”));
}

二、保存文件到sd卡
獲取手機(jī)sd空間的大小:

?
1
2
3
4
5
6
7
8
9
10
11
file path = environment.getexternalstoragedirectory();
    statfs stat = new statfs(path.getpath());
    long blocksize = stat.getblocksize();
    long totalblocks = stat.getblockcount();
    long availableblocks = stat.getavailableblocks();
    long totalsize = blocksize*totalblocks;
    long availsize = blocksize * availableblocks;
 
    string totalstr = formatter.formatfilesize(this,totalsize);
    string availstr = formatter.formatfilesize(this, availsize);
    tv.settext("總空間"+totalstr+"\n"+"可用空間"+availstr);

加入寫外部存儲的權(quán)限:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<uses-permission android:name="android.permission.write_external_storage"/>
 
public static void save(string name ,string password) throws exception{
if (environment.getexternalstoragestate().equals(environment.media_mounted)){
file file = new file(environment.getexternalstoragedirectory(),"info.txt");
//也可直接寫/sdcard/info.txt 先判斷sd卡是否存在
    fileoutputstream fos = new fileoutputstream(file);
    string txt = name+":"+password;
    fos.write(txt.getbytes());
    fos.flush();
    fos.close();
// 使用randomaccessfile像文件追加內(nèi)容fileoutputstream會把原有的文件內(nèi)容清空
//randomaccessfile raf = new randomaccessfile(file,"rw");
//raf.seek(file.length()); 將文件指針移動到最后
//raf.write(name.getbytes()+password.getbytes());
//raf.close();
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//讀取文件 加入讀取權(quán)限
public static string read(){
      try {
        if (environment.getexternalstoragestate().equals(environment.media_mounted)){
          file sdcarddir = environment.getexternalstoragedirectory();
          fileinputstream fis = new fileinputstream(sdcarddir.getcanonicalpath() + "info.txt");
          bufferedreader br = new bufferedreader(new inputstreamreader(fis));
          stringbuilder sb = new stringbuilder("");
          string line = null;
          while ((line = br.readline())!= null){
            sb.append(line);
          }
          return sb.tostring();
        }
      } catch (exception e) {
 
        e.printstacktrace();
      }
      return null;
    }

三、sharedpreferences的使用
sharedpreference是開發(fā)中常用的一種存儲方式,主要存儲一些系統(tǒng)不變的參數(shù)如是否是第一次進(jìn)入應(yīng)用程序等,通過鍵值對的方式進(jìn)行存儲
可以存儲的類型:booleans, floats, ints, longs,strings.

getsharedpreferences() - 存儲多個參數(shù)
getpreferences() - 僅存儲一個參數(shù)并且不需要指定名字(key)
寫入的步驟:

sharedpreferences調(diào)用edit()得到一個editor對象
使用 putboolean() and putstring()添加值
提交事務(wù)完成存儲
讀取時:只需要調(diào)用sharedpreferences的getboolean() and getstring()

下面是示例代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class mysharedpreference {
  private context context;
  private sharedpreferences sp ;
  private editor edit;
  public mysharedpreference(context context){
    this.context = context;
  }
  public boolean savemessage(string name,string pwd){
    boolean flag = false;
     sp = context.getsharedpreferences("userinfo",context.mode_private);
     //mode定義了訪問的權(quán)限現(xiàn)在是本應(yīng)用可以訪問
    edit = sp.edit();
    edit.putstring("name", name);
    edit.putstring("pwd", pwd);
    flag = edit.commit();//提交事務(wù)將數(shù)據(jù)持久化到存儲器中
    return flag;
 
  }
  public map<string,object> getmessage(){
    map<string,object> map = new hashmap<string, object>();
    sp = context.getsharedpreferences("userinfo", context.mode_private);
    string name = sp.getstring("name", "");
    string pwd = sp.getstring("pwd", "");
    map.put("name", name);
    map.put("pwd",pwd);
    return map;
 
  }
 
}

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 爱草在线| 精品日韩一区二区 | 一呦二呦三呦国产精品 | 精品日韩视频 | 欧美久久视频 | 亚洲成人av一区二区三区 | 亚洲精彩视频在线 | 国产精品亚洲自拍 | 欧美日韩一区二区在线 | 亚洲日本乱码在线观看 | 日韩高清中文字幕 | 亚洲精品久久久久久久久久久久久 | 国产毛片网站 | 国产精品欧美一区二区三区 | 黄色四虎 | 日韩免费高清视频 | 亚洲成人免费网站 | 国产精品视频导航 | 一区日韩 | 欧美日韩精品久久久 | 欧美 日韩 国产 在线 | 国产中文字幕在线 | 国产午夜精品久久久久久久 | 日韩精品一区二区三区第95 | 精品国产乱码久久久久久1区2区 | 在线视频中文字幕 | 久久综合狠狠综合久久综合88 | 黄色成人在线 | 国产黄色av网站 | 国产精品久久久久久中文字 | 人人人人澡人人爽人人澡 | 一二三区av| 国产精品成人国产乱一区 | 宅男lu666噜噜噜在线观看 | 午夜精品在线 | 中文字幕第33页 | 成人精品视频免费在线观看 | 国产三级一区 | 成人午夜视频在线播放 | 狠狠草视频 | 日韩在线 |