




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】怎么在android中读写Json文件
怎么在android中读写Json文件?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。首先在SD卡上的读写权限是一定要申请的。那么还是老办法,在AndroidManifest.xml文件中添加<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>这在android6.0以下的系统就足够了。6.0及以上的更新的系统,在代码中需要申请SD卡的读写权限。先来构建界面,两个按钮一个文字显示组件。<?xml
version="1.0"
encoding="utf-8"?>
<LinearLayout
xmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.cofox.functions.ReadWriteJsonData.ReadWriteJsonDataActivity">
<Button
android:id="@+id/btnSingleWJson"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="独立写Json文件"
/>
<Button
android:id="@+id/btnSingleRJson"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="独立读JSON文件"
/>
<TextView
android:id="@+id/ttvwJson"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:textSize="20sp"/>
</LinearLayout>默认界面在onCreate方法中增加按钮动作//
独立写Json文件
btnSingleWJson.setOnClickListener
{
}
//
独立读Json文件
btnSingleRJson.setOnClickListener{
}写入Json文件要先判断SD卡的读写权限,没权限要申请权限,如果有权限才执行写操作。//
独立写Json文件
btnSingleWJson.setOnClickListener
{
//
判断有无写SD卡的权限
if
(ContextCompat.checkSelfPermission(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
!=
PackageManager.PERMISSION_GRANTED)
{
//申请写
SD
卡的权限
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE),
COFOX_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE)
}
else
{
saveSingleJson()
}
}这其中的saveSingleJson()方法是具体的写Json的实现。fun
saveSingleJson(){
Toast.makeText(this,
"保存独立Json文件",
Toast.LENGTH_LONG).show()
//打开要写入的json文件
val
fos
=
FileOutputStream(jsonFile)
//json数据
val
products
=
arrayListOf<Product>()
products.add(Product("0001",
"微服务核心服务端"))
products.add(Product("0002",
"平台管理android端"))
products.add(Product("0003",
"平台管理web端"))
products.add(Product("0004",
"企业用户android端"))
products.add(Product("0005",
"终端用户wx/android/web端"))
products.add(Product("0006",
"android全功能端"))
products.add(Product("0007",
"明月端"))
//创建JsonWrite对象
val
writer
=
JsonWriter(OutputStreamWriter(fos,
"utf-8"))
writer.setIndent("
")
writer.beginArray()
for
(product
in
products){
writer.beginObject()
("id").value(product.id)
("name").value()
writer.endObject()
}
writer.endArray()
writer.close()
}注意writer.close()不能丢失,不然你就写不到文件里了。代码中的Json文件保存位置存放在一个变量中val
jsonFile
=
"/sdcard/cofoxtest.json"读取Json文件,一个对列表的记录进行循环读取,一个是对记录内的字段循环读取,两个循环嵌套。//
独立读Json文件
btnSingleRJson.setOnClickListener
{
val
fis
=
FileInputStream(jsonFile)
var
reader
=
JsonReader(InputStreamReader(fis,"utf-8"))
val
products
=
ArrayList<Product>()
reader.beginArray()
while
(reader.hasNext()){
var
id
=
""
var
name
=
""
reader.beginObject()
while
(reader.hasNext())
{
var
field
=
reader.nextName()
if
(field.equals("id")){
id
=
reader.nextString()
}else
if
(field.equals("name")){
name
=
reader.nextString()
}else{
reader.skipValue()
}
}
reader.endObject()
products.add(Product(id,
name))
}
reader.endArray()
reader.close()
if
(products
!=
null)
{
var
result
=
""
for
(product
in
products)
{
result
+=
"id:"
+
product.id
+
"
name:"
+
+
"\n"
ttvwJson.setText(result)
}
}
}如果是高版本的android,第一次运行,会对权限做一个判断,根据操作人的权限赋予的选择,有一个相应的系统反应。这就是权限选择结果的一个方法重写。如果同意了权限就写入,如果不同意就显示提示信息。
override
fun
onRequestPermissionsResult(requestCode:
Int,
permissions:
Array<out
String>,
grantResults:
IntArray)
{
when
(requestCode)
{
COFOX_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE
->
{
if
(grant
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 邵阳市新邵县2025届四下数学期末检测模拟试题含解析
- 房产最高额担保合同
- 宽城满族自治县2025年数学五年级第二学期期末综合测试模拟试题含答案
- 2025年度企业单位借款合同范例
- 山东省枣庄市滕州市2024-2025学年高二下学期第一次检测历史试卷(含答案)
- 餐饮服务外包合同范本多条款
- 科研仪器设备采购合同
- 物资供应合同
- 傣族民间舞的风格特点
- 三年级上册4、水生植物教案
- 预防打架主题班会
- 澳洲外卖行业现状分析
- 银行社保卡营销计划书
- 初中女生防侵安全知识讲座
- 小学生预防传染病主题班会
- 第六章 证据规则
- 数学建模数学实验插值及案例
- 青海利亚达化工有限公司年产6000吨高纯硼酸升级改造项目环评报告
- 35kv变电站土建施工方案
- 五年级下册综合实践活动教案-有趣的拉线偶人 全国通用
- 人教版四年级数学下册《营养午餐》评课稿
评论
0/150
提交评论