Java通过阅读器书写器实现按编码读写字符

简介: 本文目录1. 简介2. 示例

1. 简介

通过按字节的方式读写文件,实际上是比较底层的,并不算方便。实际程序员可能更喜欢指定编码(如UTF-8),并按字符读写。

Java提供了封装好的阅读器、书写器替我们完成了流-字符转换,我们直接可以操作读写字符的函数即可。

2. 示例

工具类

//工具类
package com.maoge.stream;
import java.io.File;
public class StreamUtils {
  //用于定义每次读取的长度
  public static final int BUFFER_LENGTH=512;
  //文件对象
  public static File FILE_FOR_READ;
  public static File FILE_FOR_WRITE;
  static{
    FILE_FOR_READ=new File("C:\\test.txt"); 
    FILE_FOR_WRITE=new File("C:\\result.txt"); 
  }
}

阅读器、书写器

package com.maoge.stream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//阅读器、书写器示例
public class ReaderWriterDemo {
  //测试入口
  public static void main(String[] args){
    //书写器OutputStreamWriter示例
    writeText("哈利路亚");
    //阅读器InputStreamReader示例
    readText();
    //可以在InputStreamReader上再串联一个BufferedReader,实现按行读取,这个就非常方便了。
    System.out.println("开始按行读取"); 
    readLine();
  }
  public static void writeText(String text){
    OutputStreamWriter out=null;
    try {
      //OutputStreamWriter是按字符(非字节了)方式写入,同时可以指定编码
      out=new OutputStreamWriter(new FileOutputStream(StreamUtils.FILE_FOR_WRITE),"UTF-8");
      out.write(text);
      out.flush();
    } catch (Exception e) {
      System.out.println(e.toString());
    }finally{
      try {
        out.close();
      } catch (IOException e) {
        System.out.println(e.toString());
      }
    }
  }
  public static void readText(){
    InputStreamReader in=null;
    try{
      //注意阅读器一次读取一个字符
      in=new InputStreamReader(new FileInputStream(StreamUtils.FILE_FOR_READ),"UTF-8");
      StringBuilder sb=new StringBuilder();
      int readInt;
      while((readInt=in.read())!=-1)
        sb.append((char)readInt);
      System.out.println(sb.toString());
    }catch(Exception e){
      System.out.println(e.toString());
    }finally{
      try {
        in.close();
      } catch (IOException e) {
        System.out.println(e.toString());
      }
    }
  }
  public static void readLine(){
    BufferedReader br=null;
    try{
      br=new BufferedReader(new InputStreamReader(new FileInputStream(StreamUtils.FILE_FOR_READ),"UTF-8"));
      String line = null;
      while((line = br.readLine())!=null)
      {
        System.out.println(line); 
      }
    }catch(Exception e){
      System.out.println(e.toString());
    }finally{
      try {
        br.close();
      } catch (IOException e) {
        System.out.println(e.toString());
      }
    }
  }
}
相关文章
|
30天前
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
70 0
|
2天前
|
存储 移动开发 Java
java核心之字符串与编码
java核心之字符串与编码
|
1月前
|
Java
Java系列之:字符串UTF-8 编码格式转换位 UTF-32 【生僻字截取问题】
这篇文章讨论了在Java中处理包含生僻字的字符串时可能遇到的问题,并提供了一种解决方法:将字符串的编码格式从UTF-8转换为UTF-32,以确保每个字符都占用固定的字节数,从而避免在截取操作中破坏字符,示例代码展示了如何进行编码转换和字符串截取。
|
1月前
|
存储 安全 Java
"Java编码魔法:揭秘图片与文件的Base64神秘转换术,让数据在指尖跳跃!"
【8月更文挑战第16天】Base64编码在Java开发中常用于将二进制数据如图片转换为ASCII字符串以便传输。编码使用64个字符及等号填充,每3字节数据编码为4个字符。Java利用`java.util.Base64`类实现此功能:读取图片或文件为字节数组后进行编码。解码时将Base64字符串还原为字节数组并写入文件。需注意编码效率降低、不提供安全性及特殊字符兼容性等问题。掌握这些技巧有助于解决Web开发中的数据传输需求。
57 4
|
1月前
|
easyexcel Java 关系型数据库
阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel
该文章主要介绍了在Java应用中如何使用EasyExcel技术完成对Excel文件的导入和导出操作,包括环境搭建、基本概念、快速入门、进阶操作和综合应用等内容,并提供了相关代码示例和注意事项。
 阿里巴巴-EasyExcel 基于Java的简单、省内存的读写Excel
|
1月前
|
Java
Java——编码GBK的不可映射字符
Java——编码GBK的不可映射字符
31 1
|
28天前
|
Java PHP 开发者
PHP中的异常处理:Java常见的编码方式
在PHP开发中,掌握异常处理至关重要,它有助于预见并管理运行时错误,避免用户体验受损或数据丢失。本文介绍PHP异常处理的基本概念与实践,包括try-catch语句的使用,以及如何通过抛出和捕获异常来增强代码的健壮性和可靠性。通过示例展示如何避免常见错误,如除数为零的情况,并探讨多catch块和finally语句的高级用法,帮助开发者提升程序稳定性与可维护性。[总字符数:238]
24 0
|
1月前
|
存储 Java Apache
|
2月前
|
负载均衡 NoSQL Java