uniapp安卓读取或写入txt文件,创建文件或文件夹,获取手机内置存储根路径

这篇具有很好参考价值的文章主要介绍了uniapp安卓读取或写入txt文件,创建文件或文件夹,获取手机内置存储根路径。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用应开启以下权限(读取和写入)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 

原理:利用H5plusnative,引入java类来进行处理。

File.js

/* 
	使用该类应开启以下权限(读取和写入)
	<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 */
/* 
	文件编码
	ansi(ascii):英文标准码0-127,包括控制符和其他英文字符编码,这在后来一直统一没再变过,当然它只需要一个字节保存
	gb2312和gbk:这两个是ancii码加上汉字的扩展,汉字多达10万,在ancii编码基础上再加一个字节表示汉字,共可表示字符65535个,包括了繁体字。因此一个中文字符包含两个字节。eclipse中默认编码方式为gbk。在Windows中文系统中ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码。
	Unicode编码:顾名思义,这是国际统一标准编码,在这之前各国标准编码不统一,微软等公司需要为各国的计算机系统定制符合不同编码标准的系统,显然,成本太高,并且互联网的出现让不同编码标准的计算机交互变得困难,如:两国的邮件系统,会因为使用不同的编码标准而导致接受方收到的邮件是乱码。
	utf-8和utf-16编码:UTF的意思是(UCS Transfer Format),显然是随着互联网的出现,需要解决Unicode在网络上的传输问题。顾名思义,UTF8就是每次8个位传输数据,而UTF16就是每次16个位,只不过为了传输时的可靠性,从UNICODE到UTF时并不是直接的对应,而是要过一些算法和规则来转换。UTF-8就是在互联网上使用最广的一种unicode的实现方式。
*/

/**
 * 获取手机内置存储的根路径
 * @return {String}
 */
const root = function() {
	const environment = plus.android.importClass("android.os.Environment");
	return environment.getExternalStorageDirectory();
}

/**
 * 获取指定文件夹下的所有文件和文件夹列表
 * @param {String} path 文件夹路径
 * @return {Array<String>} 文件和文件夹列表
 */
const filelist = function(dir = '') {
	const File = plus.android.importClass("java.io.File");
	let list = [];
	let file = new File(dir);
	let tempList = file.listFiles();
	for (let i = 0; i < tempList.length; i++) {
		let fileName = tempList[i].getName();
		list.push(fileName);
	}
	return list;
}

/**
 * 创建文件
 * @return {boolean} flase=失败(已存在、操作失败),true=成功
 */
const createNewFile = function(path = '') {
	const File = plus.android.importClass('java.io.File');
	let file = new File(path);
	if (!file.exists()) {
		return file.createNewFile();
	}
	return false;
}

/**
 * 创建文件夹
 * @return {boolean} flase=失败(已存在、操作失败),true=成功
 */
const mkdirs = function(path = ''){
	const File = plus.android.importClass('java.io.File');
	let file = new File(path);
	if (!file.exists()) {
		return file.mkdirs();
	}
	return false;
}

/**
 * 读取文件
 * @param {String} path 文件路径
 * @param {String} charset 编码
 * @return {Array<String>} 内容列表(按行读取),文件不存在或异常则返回false
 */
const readTxt = function(path = '', charset = 'utf-8') {
	const File = plus.android.importClass('java.io.File');
	const InputStreamReader = plus.android.importClass('java.io.InputStreamReader');
	const BufferedReader = plus.android.importClass('java.io.BufferedReader');
	const FileInputStream = plus.android.importClass('java.io.FileInputStream');
	let file = new File(path);
	let inputStreamReader = null;
	let bufferedReader = null;
	let list = [];
	try {
		if (!file.exists()) {
			return false;
		}
		inputStreamReader = new InputStreamReader(new FileInputStream(file), charset);
		bufferedReader = new BufferedReader(inputStreamReader);
		let line = '';
		while (null != (line = bufferedReader.readLine())) {
			list.push(line);
		}
		bufferedReader.close();
		inputStreamReader.close();
	} catch (e) {
		if (null != bufferedReader) {
			bufferedReader.close();
		}
		if (null != inputStreamReader) {
			inputStreamReader.close();
		}
		return false;
	}
	return list;
}

/**
 * 写入文件内容
 * @param {String} path 文件路径
 * @param {String} content 内容
 * @param {boolean} append 内容写入类型,false=不追加(覆盖原有内容),true=追加(从内容尾部写入)
 * @param {String} charset 编码
 * @return {boolean} true=成功,false=失败
 */
const writeTxt = function(path = '', content = '', append = false, charset = 'utf-8') {
	const File = plus.android.importClass('java.io.File');
	const FileOutputStream = plus.android.importClass('java.io.FileOutputStream');
	const OutputStreamWriter = plus.android.importClass('java.io.OutputStreamWriter');

	let outputStreamWriter;
	let file = new File(path);
	try {
		//不存在则创建新的文件
		if (!file.exists()) {
			file.createNewFile();
		}
		outputStreamWriter = new OutputStreamWriter(new FileOutputStream(path, append), charset);
		outputStreamWriter.write(content);
		outputStreamWriter.close();
	} catch (e) {
		if (null != outputStreamWriter) {
			outputStreamWriter.close();
		}
		return false;
	}
	return true;
}

/**
 * 判断文件是否存在
 * @param path 文件路径
 * @return true=存在 false=不存在
 */
const isFileExist = function(path = ''){
	const File = plus.android.importClass('java.io.File');
	return new File(path).exists()
}

/**
 * 删除文件
 * @param {String} path
 */
const deleteFile = function(path = ''){
	const File = plus.android.importClass('java.io.File');
	let file = new File(path);
	if (file.exists()) {
		return file.delete();
	}
	return false  
} 


export default {
	root,
	filelist,
	createNewFile,
	mkdirs,
	readTxt,
	writeTxt,
	isFileExist,
	deleteFile
}

uniapp开发记录文章来源地址https://www.toymoban.com/news/detail-672816.html

到了这里,关于uniapp安卓读取或写入txt文件,创建文件或文件夹,获取手机内置存储根路径的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp安卓本地写入读取文件

    在需要使用的地方引入该文件。

    2024年02月12日
    浏览(39)
  • node使用fs模块(四)—— 文件夹的使用(创建、读取、删除)

    创建、读取、删除都有同步方法,方法后面加上sync即可。不过多解释了。 参数1: path——读取的文件路径( 必填 ) 参数2: option——读取的文件配置(可选) recursive 是否递归创建,默认为false 参数3: callback——读取回调函数( 必填 ) 参数1: path——读取的文件路径(

    2024年02月06日
    浏览(71)
  • Node.js 文件写入及文件夹交互操作

    目录 1、文件写入 1.1 同步写入文件 1.2 将内容追加到文件 2、文件夹交互 2.1 检查文件夹是否存在 2.2 创建新文件夹 2.3 读取目录内容 2.4 重命名文件夹 2.5 删除文件夹 在Node.js中写入文件最简单的方法是使用fs.writeFile()API。 您可以使用同步版本fs.writeFileSync(): 您还可以使

    2024年02月06日
    浏览(48)
  • Unity 获取文件夹引用并读取文件夹路径

    编辑器中的文件夹属于DefaultAssets类型的资源 EditorGUILayout.ObjectField 可以获取对象的引用 AssetDatabase.GetAssetPath可通过对象的实例id获取资源路径 DirectoryInfo 可获取目录内文件信息 Path.GetFileNameWithoutExtension 可获取无后缀的文件名 弹出窗口 选择文件夹 打印文件夹内文件名 点击文件

    2024年04月27日
    浏览(56)
  • C++对txt文件的写入读取操作

    摘自c++中文网 ifstream 是输入文件流(就是通过它定义的对象获取文件中的内容) ofstream 是输出文件流(将内容写入文件) 注意 :要使用输入输出文件流要包含头文件 #includefstream 首先要用 ofstream 定义一个输入对象 ofstream outf; 这里的outf可以自定义 接着用 outf.open(文件路径) 打

    2024年02月13日
    浏览(53)
  • python读取文件夹下的文件以及子文件夹中文件

    os.listdir() 读取目标文件夹下的文件名和子文件夹名,不会递归读取子文件夹下 方法一: root, dirs, files = os.walk() 递归读取文件夹和 子文件夹下所有文件 。方法二:也可以用os.listdir(),判断是文件夹再os.listdir()自己写一个递归程序 示例

    2024年02月16日
    浏览(69)
  • Unity3D操作数据之Txt文档操作(创建、读取、写入、修改)

    Unity3D操作数据之Txt文档操作(创建、读取、写入、修改) 其实读取Txt文档非常简单、也不需要导入 插件 ,仅需引入相应的 命名空间 即可。 命名空间: using System.IO 要注意的一点是,文档格式设置为UTF-8,不然中文可能显示不太正确。 使用写入语句会自动创建对应的文档 使用

    2024年02月02日
    浏览(67)
  • python读取txt文件内容,写入csv文件中去。

    txt文件中的内容大概是这样的: 2.在图3中,当开关断开时,R1、R2_______(串联/并联),当开关闭合时, 被短路。开关由断开转为闭合时,总电阻 ,总电流_______,通过R2的电流_______(变大/变小/不变)。 3.如图3,当开关闭合时,R2两端电压为3V,若R2=10Ω,则电流为_______。断开

    2023年04月08日
    浏览(69)
  • python 读取文件夹下子文件夹下的csv数据表

    可以使用 Python 中的  os  和  csv  模块来读取文件夹下的文件夹的 csv 数据。具体的步骤如下: 导入  os  和  csv  模块。 使用  os  模块的  listdir  函数列举出目标文件夹下的所有子文件夹的名称。 对于每个子文件夹,列举出其中的所有 .csv 文件的名称,并逐一读取 csv

    2024年02月11日
    浏览(79)
  • 安卓的工程目录文件夹简单介绍

    当创建了一个安卓工程之后,系统会生成很多文件夹,那么这些文件夹都存放的是什么东西呢? src:存放java代码,有包,有文件。相当于普通java程序的src文件夹。 gen:存放自动生成的文件。R.java存放的是程序的页面、按键、文本等的id。 Android 4.4和Android Private Libaries:安卓

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包