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元件的各種應用

在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來表示字串"/"


這些也是同標籤文章 :

沒有留言: