File文件的写入与读取

文件的输入流用于从文件中读取数据,输出流是将数据写入文件中。文件的类型又分为二进制的图片、音视频及人可以看懂的文字这两种。第一种类型的文件的读写就要通过字节输入输出流才能进行读取而第二种的话多用字符输入输出流来操作。

2.字节输入输出流的基本操作:

 val inputStream: InputStream = FileInputStream("file.txt")
        val byte: Int = inputStream.read() // 读取单个字节
        val byteArray: ByteArray = ByteArray(1024)
        val bytesRead: Int = inputStream.read(byteArray) // 读取多个字节到数组
        val outputStream: OutputStream = FileOutputStream("file.txt")
        outputStream.write(byte) // 写入单个字节
        outputStream.write(byteArray) // 写入字节数组
        inputStream.close()
        outputStream.close()

当然为了提高效率我们这里可以使用缓冲流BufferedOutputStream/BufferedInputStream,通过缓冲区高效读取和写入文件。

val bufferedInputStream: BufferedInputStream = BufferedInputStream(FileInputStream("file.txt"))
        val bufferedOutputStream: BufferedOutputStream = BufferedOutputStream(FileOutputStream("file.txt"))
  

3.字符输入输出流基本操作

从文件读取字符流


   val reader = FileReader("file.txt")
    var char: Int = reader.read()//每次读取的字符长度
    while (char != -1) {
        char = reader.read()//保存读取的字符
    }
    reader.close()//关闭流
写入字符流到文件
 val writer = FileWriter("file.txt")
    writer.write("Hello, World!")//写入字符串
    writer.write(200)//写入整数
    writer.close()//关闭流

用缓冲器流类高效写入读取


    val reader = BufferedReader(FileReader("myfile.txt"))//使用缓冲流
    var rline: String? = reader.readLine()
    while (line != null) {
       rline = reader.readLine()//逐行读取
    }
    reader.close()//关闭流

3文件的其他操作

1.检查文件是否存在

file.exists()

2.获取应用程序的内部文件目录的路径

filesDir.path

实例(以用户登录实例中的读取用户信息为例):

   //获取文件路径
    private fun filePath(context:Context):String{
        return "${context.filesDir.path}/userInfo"
    }
//判断文件路径是否存在
  private fun fileExist(path:String):Boolean{
        val file = File(path)
        return file.exists()
    }
 fun readData(context: Context):List<User>{
        if (fileExist(filePath(context))) {//判断文件路径是否存在
            FileReader(filePath(context)).use {
                val jsonString = it.readText()
                val token = object : TypeToken<List<User>>() {}
                return Gson().fromJson(jsonString, token)
            }
        }
        return emptyList()
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值