国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Android如何寫文件到sdcard目錄或指定目錄,讀指定目錄中指定文件的內(nèi)容

這篇具有很好參考價(jià)值的文章主要介紹了Android如何寫文件到sdcard目錄或指定目錄,讀指定目錄中指定文件的內(nèi)容。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?首先在AndroidManifest中添加讀寫權(quán)限:


<!--    寫外部存儲(chǔ)-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<!--    讀外部存儲(chǔ)-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<!--    android 10 讀寫sd卡權(quán)限-->
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"
        tools:ignore="ProtectedPermissions" />
public class FileWriteReadActivity extends Activity {
    private static final String TAG="FileWriteReadActivity";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_new_bd_meige);
        //將內(nèi)容為"test read file222" 的文本文件baa.txt存到/sdcard目錄下
        writeFile("test read file222","/sdcard","baa.txt");


        try {
            Thread.sleep(3000);
            //從/sdcard目錄中讀baa.txt文件中的內(nèi)容
            String fileActivateData = getFileActivateData("/sdcard","baa.txt");
            Log.e(TAG,"fileActivateData==="+fileActivateData);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }


    /**
     * 寫文本文件到指定目錄下
     * @param content 文本內(nèi)容 "test read file222"
     * @param rootPath 指定要存放的目錄 此示例中是/sdcard
     * @param authName 文件名稱 "baa.txt"
     */
    public void writeFile(String content,String rootPath,String authName) {
        try {
            //判斷實(shí)際是否有SD卡,且應(yīng)用程序是否有讀寫SD卡的能力,有則返回true
            if (Environment.getExternalStorageState().equals(
                    Environment.MEDIA_MOUNTED)) {
                String path = rootPath;
                File dir = new File(path);
                if (!dir.exists()) {
                    dir.mkdirs();
                }
                File targetFile = new File(path +"/"+authName);
                Log.e("FilePackUtil", "targetFile.getPath()===" + targetFile.getPath());
//                方式一:使用RandomAccessFile是在原有的文件基礎(chǔ)之上追加內(nèi)容,
//                RandomAccessFile raf = new RandomAccessFile(targetFile, "rw");
//                raf.seek(targetFile.length()); //光標(biāo)移到原始文件最后,再執(zhí)行寫入
//                raf.write(content.getBytes());
//                raf.close();

//                方式二:而使用outputstream則是要先清空內(nèi)容再寫入
                FileOutputStream fileOutputStream = new FileOutputStream(targetFile);
                byte[] buffer=content.getBytes();
                fileOutputStream.write(buffer, 0, buffer.length);// 開始寫入數(shù)據(jù)到這個(gè)文件。
                fileOutputStream.flush();
                fileOutputStream.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 讀取指定目錄下指定文件的內(nèi)容
     * @param fileAbsolutePaht 指定的目錄 /sdcard
     * @param txtName 指定的文件 "baa.txt"
     * @return
     */
    private String getFileActivateData(String fileAbsolutePaht,String txtName) {
        ArrayList<String> result = new ArrayList<String>();
        File file = new File(fileAbsolutePaht);
        File[] files = file.listFiles();
        if (files != null) {
            //篩選指定目錄下是否有指定文件
            for (int i = 0; i < files.length; ++i) {
                if (!files[i].isDirectory()) {
                    String fileName = files[i].getName();
                    if (fileName.equals(txtName)) {
                        result.add(fileName);
                    }
                }
            }
            
            //若有指定文件,則讀文件內(nèi)容
            if (result.size() != 0) {
                return readTxtFile(fileAbsolutePaht + "/"+ result.get(0));
            }
        }
        return "";
    }


    /**
     * 讀文件中的內(nèi)容 
     * @param strFilePath /sdcard/baa.txt
     * @return
     */
    public String readTxtFile(String strFilePath) {
        String path = strFilePath;
        Log.e("FilePackUtil", "strfilePath===" + path);
        String content = ""; //文件內(nèi)容字符串
        //打開文件
        File file = new File(path);
        //如果path是傳遞過來的參數(shù),可以做一個(gè)非目錄的判斷
        if (file.isDirectory()) {
            Log.d("TestFile", "The FaceAuthFile doesn't not exist.");
        } else {
            try {
                InputStream instream = new FileInputStream(file);
                if (instream != null) {
                    InputStreamReader inputreader = new InputStreamReader(instream);
                    BufferedReader buffreader = new BufferedReader(inputreader);
                    String line;
                    //分行讀取
                    while ((line = buffreader.readLine()) != null) {
                        content += line;
                    }
                    instream.close();
                }
            } catch (java.io.FileNotFoundException e) {
                Log.d("TestFile", "The File doesn't not exist.");
            } catch (IOException e) {
                Log.d("TestFile", e.getMessage());
            }
        }
        return content;
    }
}

踩坑提醒:

若報(bào)錯(cuò)/sdcard/....:open failed:EACCES(Permission denied) 則表示沒有權(quán)限向sdcard中寫文件

解決方法:

1、更換文件存儲(chǔ)目錄為外部存儲(chǔ)。如使用getExternalCacheDir(),存放路徑一般是/storage/sdcard/Android/data/<應(yīng)用包名>/cache目錄。?

2、將應(yīng)用打包成系統(tǒng)應(yīng)用。在AndroidManifest.xml 中manifest節(jié)點(diǎn)下添加?android:sharedUserId="android.uid.system",還需要系統(tǒng)簽名。文章來源地址http://www.zghlxwxcb.cn/news/detail-684962.html

到了這里,關(guān)于Android如何寫文件到sdcard目錄或指定目錄,讀指定目錄中指定文件的內(nèi)容的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [Android] Android文件系統(tǒng)中存儲(chǔ)的內(nèi)容有哪些?

    [Android] Android文件系統(tǒng)中存儲(chǔ)的內(nèi)容有哪些?

    如果不考慮廠商造成的差異,Android 標(biāo)準(zhǔn)的分區(qū)還是能構(gòu)成一個(gè)定義良好的文件系統(tǒng)層的。 縱觀全文,雖然沒有太多技術(shù)性和需要邏輯推理的內(nèi)容,但是看完之后,相信對于Android文件系統(tǒng)會(huì)有更深入的理解。例如我們Android開發(fā)的時(shí)候經(jīng)常需要使用到的data/data目錄,例如進(jìn)入

    2024年01月25日
    瀏覽(18)
  • Android 讀取Txt文件內(nèi)容

    View Code 一個(gè)獲取InputStream中字符串內(nèi)容的方法:傳入一個(gè)InputStream,返回其中的文本內(nèi)容。 View Code 以gbk編碼讀取內(nèi)容,不同的文本文件可能編碼不同,如果出現(xiàn)亂碼,可能需要調(diào)整編碼。 手機(jī)測試有安卓版本限制、生產(chǎn)廠家限制,如:某OS

    2024年02月17日
    瀏覽(27)
  • 7.6:Python如何在文件中查找指定的內(nèi)容?

    在當(dāng)今數(shù)據(jù)量日益增長的時(shí)代,對于數(shù)據(jù)的處理和分析成為了各行各業(yè)都需要掌握的技能。Python作為一門流行的編程語言,擁有著強(qiáng)大的數(shù)據(jù)處理和分析能力,成為了數(shù)據(jù)科學(xué)領(lǐng)域的重要工具之一。在Python中,處理文件中的數(shù)據(jù)是常見的需求之一,而在處理文件數(shù)據(jù)中查找指

    2024年02月08日
    瀏覽(25)
  • Android Studio里項(xiàng)目的各目錄與文件

    一、總項(xiàng)目的目錄結(jié)構(gòu) 我們使用Android Studio創(chuàng)建安卓項(xiàng)目成功后,就會(huì)出現(xiàn)以下這個(gè)文件結(jié)構(gòu): .idea是自動(dòng)生成的文件,無需理會(huì)。 app為最重要的文件,里面放置的便是項(xiàng)目的代碼文件和資源文件。 gradle,顧名思義,就是構(gòu)建項(xiàng)目的gradle。為了使得構(gòu)建你的app項(xiàng)目方便管理

    2024年02月07日
    瀏覽(21)
  • Android文件選擇器 路徑選擇 支持安卓4.4 ~ 13 支持Android/data目錄訪問 支持SD卡 適配Android11

    Android文件選擇器 路徑選擇 支持安卓4.4 ~ 13 支持Android/data目錄訪問 支持SD卡 適配Android11

    Android上進(jìn)行文件選擇或操作的第三方庫,自動(dòng)申請存儲(chǔ)權(quán)限,支持 Android4.4 ~ 13,再也不用為了適配各種版本而苦惱了,快速集成,一句代碼搞定,完善的文檔,支持無root權(quán)限訪問和操作Android/data和Android/obb目錄(適配Android 13),支持SD卡,高度自定義UI滿足你的所有需求,使用非常

    2024年02月04日
    瀏覽(25)
  • [Android Studio]Android 數(shù)據(jù)存儲(chǔ)-文件存儲(chǔ)學(xué)習(xí)筆記-結(jié)合保存QQ賬戶與密碼存儲(chǔ)到指定文件中的演練

    [Android Studio]Android 數(shù)據(jù)存儲(chǔ)-文件存儲(chǔ)學(xué)習(xí)筆記-結(jié)合保存QQ賬戶與密碼存儲(chǔ)到指定文件中的演練

    ??????????? Android Debug ?????????? Topic ? 發(fā)布安卓學(xué)習(xí)過程中遇到問題解決過程,希望我的解決方案可以對小伙伴們有幫助。 ??文件存儲(chǔ) ??內(nèi)部存儲(chǔ) ??存儲(chǔ)數(shù)據(jù)到文件 ??從文件中讀取數(shù)據(jù) ??實(shí)戰(zhàn)演練--保存QQ賬號(hào)與密碼 ??acticity_main.xml布局文件? ???FileSave

    2023年04月14日
    瀏覽(25)
  • android studio 如何下載指定版本的NDK

    android studio 如何下載指定版本的NDK

    安裝及配置 NDK 和 CMake ?|? Android 開發(fā)者 ?|? Android Developers 如果官方文檔看不懂的,就看我寫的口水話版本吧; 1、AS打開SDK、NDK下載的那個(gè)對話框,如圖: ? ?2、非常關(guān)鍵的一步,默認(rèn)情況下選項(xiàng)的子項(xiàng)未展開,所以需要勾選右下角 “Show Package Detail” ,CMake也是一樣的哈

    2024年02月12日
    瀏覽(21)
  • Android JNI系列詳解之CMake配置庫文件的輸出目錄

    Android JNI系列詳解之CMake配置庫文件的輸出目錄

    一、前提 閱讀上一篇文章Android JNI系列詳解之CMake編譯工具的使用,里面講到了需要配置兩個(gè)文件:CMakeList.txt和build.gradle 二、配置CMake編譯工具輸出庫文件的路徑 1.默認(rèn)的庫文件輸出路徑:app/build/intermediates/cmake/debug/obj 由此可見不便于每次查找,因此我們需要將這個(gè)路徑配置

    2024年02月10日
    瀏覽(22)
  • UE5 Android下載zip文件并解壓縮到指定位置

    UE5 Android下載zip文件并解壓縮到指定位置

    一、下載是使用市場的免費(fèi)插件 二、解壓縮是使用市場的免費(fèi)插件 三、Android路徑問題 windows平臺(tái)下使用該插件沒有問題,只是在Android平臺(tái)下,只有使用絕對路徑才能進(jìn)行解壓縮,所以如何獲得Android下的絕對路徑?增加C++文件獲得Android平臺(tái)的文件路徑。 四、首先是利用Blu

    2024年02月06日
    瀏覽(45)
  • 批處理批量替換文本內(nèi)容,用bat代碼全篇替換txt文本文件中指定字符信息

    批處理批量全篇替換txt文本文件中指定字符信息,修改三個(gè)參數(shù)后即可使用,話不多說直接上代碼: @echo off setlocal EnableDelayedExpansion set path_str=\\\"C:UsersAdministratorDesktop1.txt\\\" set old_str=需要替換的原文本內(nèi)容 set new_str=替換后的文本內(nèi)容 set souerce_path=%path_str% for /f \\\"tokens=1* delims=

    2024年02月11日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包