wex5 file文件存储

本文详细介绍如何在JS中使用Cordova文件插件,包括配置cordova-plugin-file,将文件保存到手机根目录的方法,以及创建、写入和读取文件的具体实现。

在js中需要引入file的cordova包

require("cordova!cordova-plugin-file");

 

如果要存到手机的根目录下,在Native文件夹的对应项目中的config.xml配置文件里添加

<preference name="AndroidPersistentFileLocation" value="Compatibility"/>

 

参考文档:http://docs.wex5.com/cordova-plugin-file/

 

创建文件:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {

 

    console.log('file system open: ' + fs.name);

    fs.root.getFile("newPersistentFile.txt", { create: true, exclusive: false }, function (fileEntry) {

 

        console.log("fileEntry is file?" + fileEntry.isFile.toString());

        // fileEntry.name == 'someFile.txt'

        // fileEntry.fullPath == '/someFile.txt'

        writeFile(fileEntry, null);

 

    }, onErrorCreateFile);

 

}, onErrorLoadFs);

 

 

写入文件

function writeFile(fileEntry, dataObj) {

    // Create a FileWriter object for our FileEntry (log.txt).

    fileEntry.createWriter(function (fileWriter) {

 

        fileWriter.onwriteend = function() {

            console.log("Successful file read...");

            readFile(fileEntry);

        };

 

        fileWriter.onerror = function (e) {

            console.log("Failed file read: " + e.toString());

        };

 

        // If data object is not passed in,

        // create a new Blob instead.

        if (!dataObj) {

            dataObj = new Blob(['some file data'], { type: 'text/plain' });

        }

 

        fileWriter.write(dataObj);

    });

}

 

读取文件

function readFile(fileEntry) {

 

    fileEntry.file(function (file) {

        var reader = new FileReader();

 

        reader.onloadend = function() {

            console.log("Successful file read: " + this.result);

            displayFileData(fileEntry.fullPath + ": " + this.result);

        };

 

        reader.readAsText(file);

 

    }, onErrorReadFile);

}

 

 

<think> 我们参考了用户提供的三篇引用,并结合用户问题"Android Studio中File文件存储的用法"来组织答案。 引用[1]介绍了Device File Explorer的使用,引用[2]展示了保存文件到内部存储的代码示例,引用[3]则提供了Uri和File之间转换的方法。 根据用户问题,我们主要关注文件存储的使用方法,包括如何保存文件、读取文件以及相关工具的使用。 回答结构: 1. 介绍文件存储的基本概念和存储位置(内部存储和外部存储)。 2. 详细说明如何保存文件到内部存储(参考引用[2]示例)。 3. 说明如何从内部存储读取文件。 4. 简要介绍外部存储的使用(注意权限问题)。 5. 介绍Device File Explorer工具(参考引用[1])来查看设备上的文件。 6. 补充说明Uri和File之间的转换(参考引用[3])以适应某些需要Uri的API。 注意:我们使用行内数学表达式时用$...$,独立公式用$$...$$(但本问题可能不需要数学公式,因此可能不使用)。 生成相关问题。 </think> ### Android Studio中File文件存储的使用方法 在Android开发中,文件存储是数据持久化的基本方式之一。以下是详细使用方法及关键步骤: #### 📁 1. **文件存储位置** - **内部存储**:沙盒目录,路径为`data/data/<包名>/files/`,应用卸载时自动删除 - **外部存储**:SD卡目录`sdcard/`,需权限声明 > 注意:通过Device File Explorer可查看内部存储文件,但需开启USB调试或使用模拟器[^1] #### 💾 2. **保存文件到内部存储** 使用`Context.openFileOutput()`或`FileOutputStream`: ```java // 保存文本文件示例[^2] String filename = "data.txt"; String content = "Hello, World!"; try (FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE)) { fos.write(content.getBytes()); } catch (IOException e) { e.printStackTrace(); } ``` - `MODE_PRIVATE`:覆盖模式 - `MODE_APPEND`:追加模式 #### 📥 3. **读取内部存储文件** ```java try (FileInputStream fis = openFileInput(filename)) { InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); StringBuilder sb = new StringBuilder(); String line; while ((line = br.readLine()) != null) { sb.append(line).append('\n'); } String fileContent = sb.toString(); } catch (IOException e) { e.printStackTrace(); } ``` #### 🌐 4. **外部存储操作(需权限)** - 声明权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ``` - 保存到公共目录: ```java File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOCUMENTS), "myfile.txt"); // 写入操作同上 ``` #### 🔄 5. **Uri与File互转** ```java // File转Uri(适配Android 7.0+)[^3] Uri fileToUri(File file) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", file); } else { return Uri.fromFile(file); } } // Uri转File(通过MediaStore查询) File uriToFile(Uri uri) { String[] proj = {MediaStore.Images.Media.DATA}; Cursor cursor = getContentResolver().query(uri, proj, null, null, null); if (cursor != null) { int column_index = cursor.getColumnIndexOrThrow(proj[0]); cursor.moveToFirst(); String path = cursor.getString(column_index); cursor.close(); return new File(path); } return null; } ``` #### 🔍 6. **使用Device File Explorer验证** 1. 依次点击 **View > Tool Windows > Device File Explorer** 2. 选择设备后浏览: - 应用数据:`data/data/<包名>/files/` - SD卡文件:`sdcard/` 3. 支持右键操作:上传/下载/删除文件[^1] > ⚠️ **关键注意事项**: > - 内部存储无需权限,外部存储需动态申请权限 > - Android 7.0+ 使用`FileProvider`共享文件 > - 设备文件查看需开启`USB调试`或使用标准模拟器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值