總網頁瀏覽量

關於我自己

我的相片
人生的必修課是接受無常,人生的選修課是放下執著。

2012年3月15日 星期四

File的應用

在File的運用當中, 若需要讀取到外部記憶體(SD卡), 得加入以下權限才不會crash
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

//判別SDCard是否存在
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()
    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();

//列出所有項目的路徑
for(int i=0 ; i<files.length ; i++)
{
      files[i];
}
--------------------或--------------------
for( File f : files )
{
     f.getPath();
}

//列出所有項目
for(int i=0 ; i<files.length ; i++)
{
      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來表示字串"/"

%%%%%%%%%%%%%%%%%延伸學習-實作%%%%%%%%%%%%%%%%%%%%%%%%%
簡易檔案夾(一)
http://bedingfield-tsots.blogspot.com/2012/03/blog-post.html

沒有留言:

張貼留言