美文网首页
kotlin-Android储存

kotlin-Android储存

作者: jeffrey12138 | 来源:发表于2020-10-22 17:23 被阅读0次

因本人才学疏浅,所以写得这个可能不太准确,但是,也是目前自己的一个理解,所以请各位看官请海涵。
存储方式分为三大部分:
1 SharedPreferences
2 外部储存
3 内部储存
SharedPreferences适合用于类似登陆信息,简单的配置信息,它以xml的格式进行保存,保存的位置可以通过下面的方式进行查看


image.png 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()
        }

    }

我这里只是简单说了下使用方法,具体储存的路径不同会造成什么不同的结果的话,建议看下这些书友写的吧,他们已经写得非常详细了
https://blog.csdn.net/u012702547/article/details/50269639
https://juejin.im/post/6844903669704425485

相关文章

  • kotlin-Android储存

    因本人才学疏浅,所以写得这个可能不太准确,但是,也是目前自己的一个理解,所以请各位看官请海涵。存储方式分为三大部分...

  • Android Studio Kotlin 配置 DataBin

    在Kotlin 使用DataBinding的时候 如果只是配置如下 会报 Kotlin-android lib...

  • 【KotlinForAndroid】创建一个新项目gradle

    学习Kotlin资料 添加 Kotlin项目添加主要有三种:kotlin-android、kotlin-andro...

  • Kotlin-Android项目实战

    学以致用:从实战出发巩固Kotlin知识,本项目使用组件化 + MVP + Retrofit + RxKotlin...

  • kotlin-android动画基础篇

    因为最近在学习自定义view,所以开始也对动画需要了解下,废话不多说。动画分为视图动画和属性动画,视图动画需要设计...

  • 储存

    如何使用Web storage

  • 储存

    “如果能把此时此刻的成就感储存起来该多好,不管它看似多么不起眼,多么可笑,是那些才华横溢的人随手一丢,或者天生丽质...

  • 储存

    //----------------Build类----------------- javags(a,null,"...

  • 储存

    把一切感动都泡在酒瓶里 学古人在固执的时间里挖个凹槽 轻轻放下眉眼里都不舍的瓶子 盖着细腻的泥土 和着新鲜的木棉花...

  • 储存

    一 、cookie 1.什么是cookie 基于http协议,在本地浏览器进行本地存储的一种技术 它的特点: (...

网友评论

      本文标题:kotlin-Android储存

      本文链接:https://www.haomeiwen.com/subject/slhjmktx.html