kotlin android 镜像,kotlin-Android储存

因本人才学疏浅,所以写得这个可能不太准确,但是,也是目前自己的一个理解,所以请各位看官请海涵。

存储方式分为三大部分:

1 SharedPreferences

2 外部储存

3 内部储存

SharedPreferences适合用于类似登陆信息,简单的配置信息,它以xml的格式进行保存,保存的位置可以通过下面的方式进行查看

821f29ad0e43

image.png

821f29ad0e43

image.png

然后在data/data目录下找到自己的项目打开shared_prefs,就可以看到的配置的信息了

然后说下怎么使用,这个也比较简单

class SharedPreferencesActivity : AppCompatActivity() {

private lateinit var edContent:EditText

private lateinit var btnWrite:Button

private lateinit var btnRead:Button

private lateinit var tvContent:TextView

private lateinit var content:String

private lateinit var readContent:String

override fun onCreate(savedInstanceState: Bundle?) {

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_shared_preferences)

initView()

onClickListener()

}

private fun onClickListener() {

btnWrite.setOnClickListener {

content=edContent.text.toString()

if (content.isEmpty()){

Toast.makeText(this,"请输入内容,内容不能为空",Toast.LENGTH_SHORT).show()

}else{

writeSp(content)

}

}

btnRead.setOnClickListener {

readSp()

}

}

private fun readSp() {

val sp=getSharedPreferences("jeffrey", Context.MODE_PRIVATE)

readContent=sp.getString("content","").toString()

tvContent.text=readContent

}

private fun writeSp(content:String) {

//创建SharedPreferences对象 参数1:文件名,参数2:保存模式,建议使用MODE_PRIVATE,只让自己的项目使用

val sp=getSharedPreferences("jeffrey", Context.MODE_PRIVATE)

//创建Editor对象

val editor=sp.edit()

//保存数据

editor.putString("content",content)

//提交,这一步十分关键,需要提交才算是保存成功

editor.commit()

}

private fun initView() {

edContent=findViewById(R.id.ed_content)

btnWrite=findViewById(R.id.btn_write)

btnRead=findViewById(R.id.btn_read)

tvContent=findViewById(R.id.tv_content)

}

}

然后外部存储,前面基本一致,只是路径设置和保存方式有点不一样

private fun onClickListener() {

//文件路径,Environment.getExternalStorageDirectory()方法已经被弃用了,而且使用

//getExternalFilesDir(null)的话还不需要申请权限的说

path=getExternalFilesDir(null)?.absolutePath+"jeffrey.txt"

val file=File(path)

btnWrite.setOnClickListener {

content=edContent.text.toString()

//判断文件是否存在

if (!file.exists()){

//创建文件

file.createNewFile()

}

//以字节流的方式输送数据

val fos=FileOutputStream(file)

fos.write(content.toByteArray())

Toast.makeText(this,"写入成功", Toast.LENGTH_SHORT).show()

}

btnRead.setOnClickListener {

val fos=FileInputStream(path)

val byte=ByteArray(1024)

val len=fos.read(byte)

readContent= String(byte,0,len)

tvContent.text=readContent

}

}

然后是内部存储,其实和外部储存方式是一样的,只是路径不同罢了

private fun onClickListener() {

val file=File(filesDir,"jeffrey.txt")

btnWrite.setOnClickListener {

content=edContent.text.toString()

if (!file.exists()){

file.createNewFile()

}

val fos=FileOutputStream(file)

fos.write(content.toByteArray())

Toast.makeText(this,"写入成功", Toast.LENGTH_SHORT).show()

}

btnRead.setOnClickListener {

val fos=FileInputStream(file)

val byte=ByteArray(1024)

val len=fos.read(byte)

readContent= String(byte,0,len)

tvContent.text=readContent

Toast.makeText(this,"读取成功", Toast.LENGTH_SHORT).show()

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值