亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Day02-文件操作-登陸示例

發布時間:2020-07-15 16:51:38 來源:網絡 閱讀:440 作者:屠夫章哥 欄目:移動開發

需求:登陸


第1步:搭建UI

????采用混合布局,布局搭建好之后如下所示:

????Android Day02-文件操作-登陸示例

第2步:準備工作

????根據javaWeb中的mvc+dao的開發模式,創建好包名和類。

????Android Day02-文件操作-登陸示例

第3步:業務邏輯

????就是一個存值和取值的過程,也可以說是讀寫文件的過程。

????注意在獲取路徑的時候,不要使用硬性編碼(hardcode)。



關鍵知識點梳理:

???Android Day02-文件操作-登陸示例?

????▇獲取應用程序的files私有目錄:"/data/data/應用程序包名/files"

? ? ? ? ?方式1:得路徑,再得到流。

????????????File?context.getFilesDir()

? ? ?<-- ?補充一下 File?context.getCacheDir()????表示得到緩存目錄/caches-->

????? ? 方式2:直接得到流

? ? ? ? ? ?文件讀取流:InputStream in = context.openFileInput("文件名(帶后綴)");? ? ????

? ? ? ? ? ?文件寫入流:OutputStream out ?= context.openFileOutput("user.txt", ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Context.MODE_PRIVATE);//有2個參數,第2個參數

????????????????????????表示文件的權限。

????????

? ? ? ? ? ??

????▇獲取設備的SD卡目錄:

????????→1.注意要配置sd的訪問權限。

????????????Android Day02-文件操作-登陸示例

????????→2.判斷sd卡的狀態。????

????????????

String?storageState?=?Environment.getExternalStorageState();
if(!storageState.equals(Environment.MEDIA_MOUNTED))
{
????//如果掛起,提示用戶sd卡不存在。
	Toast.makeText(mainContext,?"sd卡不存在",?Toast.LENGTH_SHORT).show();
	return;
}

????????→3.判斷sd卡空間容量信息。

????????

//假如SD卡小于200M就提示內存不足
//首先獲取外部存儲的目錄?File對象
	File?file_storage?=?Environment.getExternalStorageDirectory();
//通過File對象來獲得外部存儲的可用空間
	Long?useable_storage?=?file_storage.getUsableSpace();
	//將字節轉換成易于閱讀的M表示方法
????????String?useable_storage_mstr?=?Formatter.formatFileSize(mainContext,useable_storage);
		????????		
//得到外部存儲的總空間
	Long?total_storage?=?file_storage.getTotalSpace();
	String?total_storage_mstr?=?Formatter.formatFileSize(mainContext,?total_storage);
????????if(useable_storage?<?1024*1024*200)
	{
		Toast.makeText(mainContext,?"外部存儲空間不足,剩余可用空間為:"
		????????	+?useable_storage_mstr?+"M"??
		????????	+?",總空間為:"?+?total_storage_mstr?+?"M"
		????????	,?Toast.LENGTH_LONG).show();
		return;
	}

????????通過linux命令df /sdcard來獲得外部設備外部存儲的信息:

????????Android Day02-文件操作-登陸示例

?????▇獲取資產文件夾Asset目錄下的文件輸入流:

????????

//獲取上下文的所有資源對象
Resources?res?=?context.getResources();
//從資源對象中獲取資產目錄Asset的管理器AssetManager
AssetManager?manager?=?res.getAssets();
//利用管理器的open方法獲取它的目錄下指定文件的讀取流
InputStream?in?=?manager.open("user.txt");

????????

????????另外一種實現方式:

mContext.getAssets().open("sdk.properties")

????????

?▇Preferences:"/data/data/應用程序包名/shared_prefs"

????? ?用于存放一些簡單的標記信息、設置信息。通過xml文件在實現保存和取出。

??????PreferenceManager.getDefaultSharedPreferences 此方法獲取的xml為“應用程序包名_preferences.xml"文件。

??????


????? ? ?

???? ? Preferences存儲文件流程

//第1步:通過上下文對象得到SharedPreferences對象
????????SharedPreferences?user_pref?=??context.getSharedPreferences("user.txt",?Context.MODE_PRIVATE);
//第2步:得到SharedPreferences的Editor對象
	Editor?user_editor?=?user_pref.edit();
//第3步:通過Editor向SharedPreferences對象里面設置值,類似map中的鍵和值?。
	user_editor.putString("username",?user.getUsername());?
	user_editor.putString("password",?user.getPassword());
//第4步:提交Editor
	return?user_editor.commit();

??????Preferences讀取文件內容

//第1步:通過上下文對象得到SharedPreferences對象
????????SharedPreferences?user_share?=?context.getSharedPreferences("user.txt",?Context.MODE_PRIVATE);
//第2步:得到share對象的數據
	String?username?=?user_share.getString("username",?"用戶名找不到");
	String?password?=?user_share.getString("password",?"密碼找不到");?
	//上面getString方法的第二個參數為找不到指定鍵名的時候返回的缺省值。

????

????通過總結可以發現,上面的這些文件讀取流,都只能讀取當前應用程序的私有目錄下的文件流,有局限性。如果要想跨應用讀取數據,還是得結合一般IO流。


????今天還講了XML的解析和序列化,和javaWeb中的xml的解析及序列化十分的相似,只是獲取解析器和序列器的方式稍有不同,是通過Xml這個類直接獲取的。


? ? ▇讀取properties文件亂碼:

??????properties里是不能直接寫中文的,中文需要轉碼成unicode編碼,也就是以\u開頭的。

?

Excel導出? ? ? ?

????????????https://blog.csdn.net/kangweijian/article/details/86694670 ?





Android 開發時如何正確獲取使用擴展存儲路徑

????http://http://my.oschina.net/liucundong/blog/314520

????

????作為一個程序員,想必你也很討厭App在SD卡根目錄亂建目錄吧,那就從我做起,來遵守Google的這一規定吧。

????通過Context.getExternalFilesDir()方法可以獲取到 SDCard/Android/data/{package_name}/files/ ,儲存一些長時間保存的數據;

????通過Context.getExternalCacheDir()方法可以獲取到 SDCard/Android/data/{package_name}/cache/,儲存臨時緩存數據;

????這兩個目錄分別對應 設置->應用->應用詳情里面的”清除數據“與”清除緩存“選項。


如何區分U盤和SD卡?

????????注意不要光通過路徑來區分U盤和SD卡

????? ?方法1:https://blog.csdn.net/qq_37069563/article/details/80271113(后來發現通過userLabel來判斷也是不準確的,有的U盤不一定含有U)

????????????????? ?

????? ?方法2:

???public?class?UDiskReceiver?extends?BroadcastReceiver{
????@Override
????public?void?onReceive(Context?context,?Intent?intent)?{
????????String?action?=?intent.getAction();
????????if?(action.equals(Intent.ACTION_MEDIA_EJECT))?{
//????????????Toast.makeText(context,?"SD卡22222已經拔出",?Toast.LENGTH_SHORT).show();
????????}?else?if?(action.equals(Intent.ACTION_MEDIA_MOUNTED))?{
????????????String?path?=?intent.getDataString().replace("/file:/",?"");
????????????File?file?=?new?File(path);
????????????getUsb(file);
//????????????Toast.makeText(context,?"SD卡2222222222已經插入?"?+MusicScanUtil.U_PATH?,?Toast.LENGTH_SHORT).show();
????????}
????}

????private?void?getUsb(File?usb)?{
????????String?path3?=?"/mnt/media_rw/";
????????File?file?=?new?File(path3);
????????File?files[]?=?file.listFiles();
????????if(files==null)?{
????????????return;
????????}
????????for(File?f:files)?{
????????????if(TextUtils.equals(f.getName(),?usb.getName()))?{
????????????????MusicScanUtil.U_PATH?=?usb.getAbsolutePath().replace("/file:/",?"");
????????????????return;
????????????}
????????}

????}

}

????????在清單里注冊監聽:

????<receiver?android:name=".receiver.UDiskReceiver"
????????>
????????<intent-filter?android:priority="1001"?>
????????????<action?android:name="android.intent.action.MEDIA_MOUNTED"?/>
????????????<action?android:name="android.intent.action.MEDIA_EJECT"?/>
????????????<data?android:scheme="file"?/>
????????</intent-filter>
????</receiver>

????????其實這個路徑,搞內核的人肯定知道。無論sd卡是否存在,這個路徑都會一直存在。可以將上面u盤獲取路徑寫死即可。對于我們的項目,U盤的路徑就是?"/mnt/media_rw/usb_otg",但是用多媒體相關的API

Cursor?cursor?=?getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,??muiscInfoArray,?null,?null,?null);

????????查找出來的文件的path,是以“68EE-C662”開頭的這樣的串,也就是相當于"/mnt/media_rw/usb_otg"一個映射路徑。就是這兩個路徑時怎么一個關系呢????

? ? ? ? 通過shell指令 "ls -l?mnt/media_rw/usb_otg",注意路徑最后沒有/,會返回包含類似"68EE-C662"這樣的串,截取出來,即可根據這個路徑去過濾文件。

????????


Android保存文件到本地后連接電腦無法查看 刷新不出來的結局辦法

https://blog.csdn.net/anyixiaodi/article/details/53607123


?

Windows上TF卡格式化后,android系統無法識別的問題

????????在window上格式化TF卡,會讓選格式化的格式:

? ? ? ??Android Day02-文件操作-登陸示例

????????一般android系統不支持exfat32格式的類型,超過32G假如電腦提示格式化,不要格式化,直接插入機器里面格式化才行,windows格式化后是無法使用的,這是windows的限制

????????

  • ? 文件夾操作

??????https://blog.csdn.net/javasxl/article/details/71524831? ?(注意重命名文件,需要新文件的父路徑與舊文件的父路徑一致)

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黑龙江省| 枣庄市| 讷河市| 蓬安县| 于田县| 桐庐县| 武陟县| 陆川县| 万载县| 郧西县| 福建省| 蒙山县| 淅川县| 宁蒗| 上高县| 汉沽区| 绥阳县| 福鼎市| 图片| 怀集县| 武义县| 盐边县| 苏州市| 龙州县| 道孚县| 那曲县| 秦皇岛市| 大理市| 阜康市| 枣强县| 桦南县| 临沧市| 忻城县| 吉林省| 九龙城区| 财经| 阳新县| 乌兰察布市| 积石山| 静安区| 吐鲁番市|