用IO流向儲存空間或SD卡中存入/讀取字元的工具類

來源:互聯網
上載者:User

標籤:android   style   blog   color   io   os   java   ar   檔案   

FileManager

package com.kale.utils;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintStream;import android.content.Context;import android.os.Environment;/** * @author:Jack Tony * @tips  : *  <!-- 讀寫SD卡的許可權 -->    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> * @date  :2014-6-30 */public class FileManager {    private String SD_PATH;    private String fileName;    private String dirName;    public String getSD_PATH() {        return SD_PATH;    }        /**     * @param permission 是否添加了許可權     */    public FileManager(boolean permission) {        //得到當前外部存放裝置的目錄        SD_PATH = Environment.getExternalStorageDirectory() + "/";    }        /**     * 在SD卡上建立檔案     *      * @throws IOException     */    public File creatSDFile(String dirName ,String fileName) throws IOException {        this.fileName = fileName;        this.dirName = dirName;        File file = new File(creatSDDir(dirName), fileName);        return file;    }            public String getFileWholePath() throws IOException{        if (dirName == null || fileName == null) {            return SD_PATH + dirName + "/" + fileName;        }        else {            throw new IOException("can‘t find dirName or fileName");        }            }        /**     * 在SD卡上建立目錄     *      * @param dirName     */    public File creatSDDir(String dirName) {        File dir = new File(SD_PATH + dirName);        dir.mkdir();        return dir;    }        /**     * 判斷SD卡上的檔案夾是否存在     * kale,file.txt->kale/file.txt     */    public boolean isFileExist(String dirName ,String fileName){        File file = new File(SD_PATH +dirName+"/"+ fileName);        return file.exists();    }        /**     * 將一個InputStream裡面的資料寫入到SD卡中     * example:kale,file.txt,inputStream->kale/file.txt     * InputStream is = new ByteArrayInputStream( "kale data".getBytes() );       manager.saveToSdCard("dir02", "kale.txt", is );     */    public File saveToSDcard(String dirName,String fileName,InputStream input){        File file = null;        OutputStream output = null;        try{            //建立目錄            creatSDDir(dirName);            //建立檔案            file = creatSDFile(dirName ,fileName);            output = new FileOutputStream(file);            byte buffer [] = new byte[5 * 1024];            //int count = 0;            while((input.read(buffer)) != -1){                //String str = new String(buffer,0,count);                //str = new String(str.getBytes("iso-8859-1"),"utf-8");                                /*System.out.println("---------File Manager----start--------");                System.out.println(str);                System.out.println("---------File Manager-----end-------");*/                output.write(buffer);            }            output.flush();        }        catch(Exception e){            e.printStackTrace();        }        finally{            try{                output.close();            }            catch(Exception e){                e.printStackTrace();            }        }        return file;    }        /**     * @param dirName     * @param fileName     * @return 從sd卡中讀取檔案的字元,返回String     * @throws Exception     */    public String readFromSDcard(String dirName,String fileName) throws FileNotFoundException {        try {            File file = new File(SD_PATH +dirName+"/"+ fileName);            FileInputStream fis = new FileInputStream(file);            BufferedReader br = new BufferedReader(new InputStreamReader(fis));            StringBuilder sb = new StringBuilder("");            String line = null;            //迴圈讀取檔案內容            while((line = br.readLine()) != null) {                sb.append(line);            }            br.close();            return sb.toString().trim();        }         catch(FileNotFoundException e) {            e.printStackTrace();            throw new FileNotFoundException("no such file");        }        catch (Exception e) {            e.printStackTrace();        }        return null;    }        /////////////////////// 直接讀取包名檔案夾下的檔案,而不是SD卡中的 /////////////////////    /**     * @param str     * 將string寫入到data/data/包名/files中     * example:write(file.txt ,data)     */    public static void write(Context mContext,String fileName,String str) {        try {            /**             * MODE_PRIVATE:該檔案只能被當前程式讀寫 MODE_APPEND:用追加方式開啟檔案,新寫入的內容追加到末尾             * MODE_WORLD_READABLE:該檔案內容可以被其他程式讀             * MODE_WORLD_WRITEABLE:該檔案內容可以被其他程式讀寫             */            FileOutputStream fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE | Context.MODE_APPEND);            PrintStream ps = new PrintStream(fos);            // 輸出檔案的內容            ps.println(str);            ps.close();        } catch (Exception e) {            e.printStackTrace();        }    }    /**     * 通過檔案名稱來讀取data/data/包名/files下的檔案     * example:read("file.txt")     * @return      * 返回null,表示找不到檔案,或出現異常     */    public static String read(Context mContext,String fileName) {        try {            // 開啟檔案輸入資料流            FileInputStream fis = mContext.openFileInput(fileName);            byte[] buff = new byte[1024];            int hasRead = 0;            StringBuilder sb = new StringBuilder("");            // 讀取檔案內容            while ((hasRead = fis.read(buff)) > 0) {                sb.append(new String(buff, 0, hasRead));            }            // 關閉檔案輸入資料流            fis.close();            return sb.toString();        }         catch(FileNotFoundException e) {            e.printStackTrace();        }        catch (Exception e) {            e.printStackTrace();        }        return null;    }}

 

用IO流向儲存空間或SD卡中存入/讀取字元的工具類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.