在File的運用當中, 若需要讀取到外部 憶體(SD卡), 得加入以下權限才不會crash//check SDCard is exist or not if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) Environment.getExternalStorageState(): mounted Environment.MEDIA_MOUNTED: mounted //取得SD卡路徑 File SDCardpath = Environment.getExternalStorageDirectory(); ex: /mnt/sdcard //建立資料夾 File mSDCardFile = new File( SDCardpath + "/mSDCardData" ); //判別該File 是否存在 boolean java.io.File.exists(); if( !mSDCardFile.exists() ) { //若該資料夾不存在, 則用mkdirs()建立 boolean java.io.File.mkdirs() //makirs上層資料夾若不 在則自動創建, mkdir則不會 mSDCardFile.mkdirs(); } <<建立檔案>> File mSDCardDoc = new File( SDCardpath + "/mSDCardData.txt" ); //判別該File是否存在 if( !mSDCardDoc.exists() ) { try { //若該檔案不存在, 則用createNewFile()建立 // boolean java.io.File.createNewFile() throws IOException mSDCardDoc.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } --------------------或-------------------- try { FileWriter mFileWriter = new FileWriter( SDCardpath.getAbsolutePath() + "/mSDCardData.txt" ); } catch (IOException e) { e.printStackTrace(); } //取得路徑(File→String) String java.io.File.getAbsolutePath(); mSDCardFile.getAbsolutePath() //取得上一層路徑(File→String) String java.io.File.getParent() mSDCardFile.getParent(); //判別是否為目錄 boolean isDirectory = mSDCardFile.isDirectory(); //判別是否為檔案 boolean isFile = mSDCardFile.isFile(); //將old.txt重新命名為new.txt String oldPath = "/mnt/sdcard/old.txt"; String newPath ="/mnt/sdcard/new.txt"; File oldFile = new File( oldPath ); oldPath.renameTo(new File(oldFile)); //刪除檔案 mSDCardFile.delete(); //判別是否可讀 boolean canRead = file.canRead(); //判別是否可寫 boolean canWrite = file.canWrite(); //檔案寫入內容 FileWriter vFile; try { vFile = new FileWriter( "/mnt/sdcard/new.txt" ); vFile.write("要寫一些內容"); vFile.close(); } catch (IOException e) { e.printStackTrace(); } //讀取檔案內容 try { String file = "/mnt/sdcard/new.txt"; InputStream input = new BufferedInputStream(new FileInputStream(file)); int res = input.available(); byte [] byte = new byte[res]; input.read(byte); //把類型設為UTF-8才能正常讀取中文字! String text = EncodingUtils.getString(byte, "UTF-8"); } catch (IOException e) { e.printStackTrace(); } //判別是否為隱藏檔 boolean isHidden = file.isHidden(); //以File[]儲存指定路徑下所有項目的路徑 File[] files=new File(SDCardpath.getAbsolutePath()).listFiles(); //列出所有項目的路徑 //用長度為files.length的迴圈找出 files[i]; --------------------或-------------------- for( File f : files ) { f.getPath(); } //列出所有項目 //用長度為files.length的迴圈找出 files[i].getName(); --------------------或-------------------- for( File f : files ) { // String java.io.File.getName() f.getName(); } //以關鍵字搜尋目標 //以result儲存搜尋結果 String result=""; for( File f : files ) { // int java.lang.String.indexOf(String string) if(f.getName().indexOf(keyword)>=0)//回傳在第幾個字找到keyword, 若都沒找到則回傳0 { result+=f.getPath()+"\n"; } } 補充:程式中可以java.io.File.separator來表示字串"/"
visited 13 states (5.77%)
Create your own visited map of The World or Triposo world travel guide for Android
2014-09-25
Android中File元件的各種應用
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言