編輯:關於Android編程
package cn.ibabyzone.library; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.app.Activity; import android.os.Environment; import android.util.Log; //用戶數據讀寫函數 //存在SD卡時數據從SD卡讀寫不存在時通過DATA目錄讀寫 public class FileUtils { private String SDPATH; private int FILESIZE = 1; public String getSDPATH() { return SDPATH; } public FileUtils(Activity thisActivity) { if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { SDPATH = Environment.getExternalStorageDirectory() + "/ibabyzone/"; } else { SDPATH= thisActivity.getFilesDir().toString() + "/ibabyzone/"; } } /** * 在SD卡上創建文件 */ public File creatSDFile(String fileName) throws IOException { File file = new File(SDPATH + fileName); file.createNewFile(); return file; } public void delFolder(String folderPath) { try { delAllFile(folderPath); //刪除完裡面所有內容 String filePath = folderPath; filePath = filePath.toString(); java.io.File myFilePath = new java.io.File(filePath); myFilePath.delete(); //刪除空文件夾 } catch (Exception e) { System.out.println("刪除文件夾操作出錯"); e.printStackTrace(); } } /** * 刪除文件夾裡面的所有文件 * @param path String 文件夾路徑 如 c:/fqf */ public void delAllFile(String path) { File file = new File(path); if (!file.exists()) { return; } if (!file.isDirectory()) { return; } String[] tempList = file.list(); File temp = null; for (int i = 0; i < tempList.length; i++) { if (path.endsWith(File.separator)) { temp = new File(path + tempList[i]); } else { temp = new File(path + File.separator + tempList[i]); } if (temp.isFile()) { temp.delete(); } if (temp.isDirectory()) { delAllFile(path+"/"+ tempList[i]);//先刪除文件夾裡面的文件 delFolder(path+"/"+ tempList[i]);//再刪除空文件夾 } } } /** * 在SD卡上創建目錄 */ public File creatSDDir(String dirName) { File dir = new File(SDPATH + dirName); dir.mkdir(); return dir; } /** * 判斷SD卡上的文件夾是否存在 */ public boolean isFileExist(String fileName) { File file = new File(SDPATH + fileName); return file.exists(); } public long file_time(String fileName) { File file = new File(SDPATH + fileName); return file.lastModified(); } /** * 將一個InputStream裡面的數據寫入到SD卡中 */ public File write2SDFromInput(String path, String fileName,InputStream input) { File file = null; OutputStream output = null; try { creatSDDir(path); file = creatSDFile(path + fileName); output = new FileOutputStream(file); byte[] buffer = new byte[FILESIZE]; while ((input.read(buffer)) != -1) { output.write(buffer); } output.flush(); } catch (Exception e) { e.printStackTrace(); } finally { try { output.close(); } catch (Exception e) { e.printStackTrace(); } } return file; } public static void deleteFile(String fileStr) { File file = new File(fileStr); if (file.exists()) { // 判斷文件是否存在 if (file.isFile()) { // 判斷是否是文件 file.delete(); // delete()方法 你應該知道 是刪除的意思; } file.delete(); } } public void delFile(String path) { String str = SDPATH+path; File file = new File(str); if (file.exists()) { file.delete(); } } public int CopyFileToFile(File fromFile, File toFile) { try { InputStream fosfrom = new FileInputStream(fromFile); OutputStream fosto = new FileOutputStream(toFile); byte bt[] = new byte[1024]; int c; while ((c = fosfrom.read(bt)) > 0) { fosto.write(bt, 0, c); } fosfrom.close(); fosto.close(); return 0; } catch (Exception ex) { return -1; } } public File CopyFileRomToSD(String romfile){ if(!android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { return null; } File rom = new File(romfile); File sd = new File(Environment.getExternalStorageDirectory() + "/ibabyzone/"+romfile); if(CopyFileToFile(rom,sd) == 0){ return sd; } return null; } }
1、概述TabLayout是在2015年的google大會上,google發布了新的Android Support Design庫的新組件之一,以此來全面支持Materi
初次用到回調是在Fragment和Activity之間進行通信的時候,當時感覺很難理解,但又覺得這個方法使用起來很方便,所以對它進行仔細的研究。發現回調不僅僅是實現功能那
之前實現過了天氣預報的功能 但是真的好丑 真的只是實現功能 所以上一篇博客也沒有貼出圖片 這次 相對於第一個 首先是界面做了調整 其次就是 之前那個只能查看實時天氣 這個
優化布局層次1.避免布局鑲嵌過深(如下) 我們完全可以去掉id為:main_ll_