Java 之 IO操作—— 文本数据的编码和解码

一、解码

  当要读取指定编码的纯文本数据时,可以使用 InputStreamReader 进行解码。所谓解码,即把二进制的字节序列按照指定字符编码解码为可以被正确识别的字符内容。

  Demo:当前系统平台的字符编码方式是:GBK,需要读取一个UTF-8 的文件内容,到当前系统中。

 1 import java.io.BufferedReader;
 2 import java.io.FileInputStream;
 3 import java.io.IOException;
 4 import java.io.InputStreamReader;
 5
 6 public class TestDecode {
 7
 8     public static void main(String[] args) {
 9         BufferedReader br = null;
10         try {
11             br = new BufferedReader(new InputStreamReader(new FileInputStream("test_utf8.txt"),"GBK"));
12
13             String str;
14             while((str = br.readLine())!=null){
15                 System.out.println(str);
16             }
17         } catch (IOException e) {
18             e.printStackTrace();
19         } finally{
20             try {
21                 br.close();
22             } catch (IOException e) {
23             }
24         }
25     }
26 }

二、编码

  要将纯文本数据,按照指定编码转成字节序列时,可以选择 OutputStream。

  Demo:编写程序实现将一个编码为“GBK”的纯文本文件test.txt,复制为编码是“UTF-8”的文件other.txt。

 1 import java.io.BufferedReader;
 2 import java.io.BufferedWriter;
 3 import java.io.File;
 4 import java.io.FileInputStream;
 5 import java.io.FileOutputStream;
 6 import java.io.IOException;
 7 import java.io.InputStreamReader;
 8 import java.io.OutputStreamWriter;
 9
10 public class TestEncode {
11     public static void main(String[] args) throws IOException {
12         copy(new File("test.txt"),"GBK",new File("other.txt"),"UTF-8");
13     }
14
15     public static void copy(File src, String srcCharset, File dest, String destCharset) throws IOException{
16         if(!src.isFile()){
17             throw new RuntimeException(src.getPath() + "不存在");
18         }
19         BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(src),srcCharset));
20         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(dest),destCharset));
21
22         String str;
23         while((str = br.readLine())!=null){
24             bw.write(str);
25             bw.newLine();
26         }
27
28         bw.close();
29         br.close();
30     }
31 }

原文地址:https://www.cnblogs.com/niujifei/p/12283964.html

时间: 2024-12-14 21:30:51

Java 之 IO操作—— 文本数据的编码和解码的相关文章

数据的编码和解码--java例子

昨天借了一本<网络程序设计实验教程(java语言)>,然后看了第一章,一个Swing例子,于是为大家分享一下! 关于数据的编码与解码,我觉得就例子而言已经交待得非常清楚了,两种方法做的. 将其转为16进制来弄的 //utf8解码 btnUTF8Decode = new JButton("UTF8\u89E3\u7801\u7801\u7ED3\u679C"); btnUTF8Decode.addMouseListener(new MouseAdapter() { @Over

支持对流数据进行编码和解码的Xceed Binary Encoding Library控件

Xceed Binary Encoding Library控件是一款为Windows软件开发人员准备的,使应用程序可以把编码二进制数据以及文件转换为文本或者把文本转换为编码二进制数据,该产品包含在 Xceed Ultimate Suite 套包中. 具体功能: 兼容RFC-2045, RFC-1741, RFC-2045 支持多种编码解码类型:UUEncode, XXEncode, Base64, Binhex, Quoted-Printable, plain Hexadecimal 完全支持对

JAVA IO操作:数据操作流:DataOutputStream和DataInputStream

掌握DataOutputStream和DataInputStream的作用. 可以使用DataOutputStream和DataInputStream写入和读取数据. 在IO包中提供了两个与平台无关的数据操作流 数据输出流:DataOutputStream 数据输入流:DataInputStream 通常按照一定格式将输入输出,再按照一定格式将数据输入. 要想使用数据输出流和输入流,则肯定要用户指定数据的保存格式.必须按指定的格式保存数据,才可以将数据输入流将数据读取进来. DataOutput

Java之IO操作总结

所谓IO,也就是Input与Output的缩写.在java中,IO涉及的范围比较大,这里主要讨论针对文件内容的读写 其他知识点将放置后续章节 对于文件内容的操作主要分为两大类 分别是: 字符流 字节流 其中,字符流有两个抽象类:Writer Reader 其对应子类FileWriter和FileReader可实现文件的读写操作 BufferedWriter和BufferedReader能够提供缓冲区功能,用以提高效率 同样,字节流也有两个抽象类:InputStream OutputStream

Java 基本IO操作

1.基本IO操作     有时候我们编写的程序除了自身会定义一些数据信息外,还需要引用外界的数据,或是将自身的数据发送到外界,这时我们需要使用输入与输出. 1)输入与输出       输入:是一个从外界进入到程序的方向,通常我们需要"读取"外界的数据时,使用输入.所以输入是用来读取数据的 输出:是一个从程序发送到外界的方向,通常我们需要"写出"数据到外界时,使用输出.所以输出是用来写出数据的 2)节点流与处理流 按照流是否直接与特定的地方(如磁盘.内存.设备等)相连

java的IO操作:字节流与字符流操作

流的概念 程序中的输入输出都是以流形式,流中保存的实际上都是字节文件. 字节流与字符流 字节流的操作: 1)输入:inputStream, 2)输出:outPutStream; 字符流的操作: 1)输入主要使用:write类. 2)输出主要使用:reader类. 内容操作就四个类. 操作流程: 使用File类操作一定有路径问题,注意分隔符: 实际上四个操作类都是抽象类(区别接口,抽象类的成员都是抽象,并且只能单继承,接口可以有全局变量,但是接口可以多继承) IO操作属于资源操作,对于资源操作,操

JAVA 基础 IO操作

java.io操作是java基础中的基础,如果没有io操作程序都不会运行起来,所以,又回顾了一下java.io操作的内容,里面的对象序列化是J2EE的基础,是java中分布式部署和调用实现的基础,还有很有对文件系统.对网络资源的读写等等. 对于里面的个人觉的比较重要的知识做了一个图总结了一下.如下: 这里对于重点的理解和使用总结几点 1.概念理解 对于java.io的概念一直理解的有点偏差,首先这里面涉及到一个方向性的概念,即我们数据从哪里来到哪里去,在java.io操作中以及里面的很多概念和类

java的IO操作:System类对IO的支持。

目标: 1,掌握SYStem对IO的三种支持: system.out system.in system.err 2,掌握system.out及system.err的区别. 3,掌握输入,输出重定向. System类的常量 java给system类对IO有一定支持,预制了三个常量. PrintStream out,PrintStream err,InputStream in. 使用static final 声明的变量是全局常量,只要是常量,所有单词字母必须全部大写.但是这里没有,是java历史遗留

java的IO操作之--RandomAccessFile

目标: 1)掌握RandomAccessFile类的作用. 2)用RandomAccessFile读取指定位置的数据. 具体内容 RandomAccessFile类的主要功能是完成随机读取功能,可以读取指定范围的内容. 假设文件中存储了以下三个数据: 因为文件中所有内容都是按照字节存储的,都有固定的保存位置. 构造方法: public RandomAccessFile(File file,String mode) throws FileNotFoundException 实例化此类需要传递Fil