java中io流详解,java的io流总结

  java中io流详解,java的io流总结

  

目录
Java IO转化流乱码引起转换流读取乱码转换流介绍InputStreamReaderOutputStreamWriter总结

  

Java IO 转化流

  

乱码引起转换流

  

读取乱码

读取电脑磁盘上的Java.txt文件内容,文件路径:e:JavaJava.txt,文件编码格式为utf-8

  代码示例:

  导入Java。io。缓冲阅读器;导入Java。io。filenotfoundexception导入Java。io。filereader导入Java。io。io异常;公共类测试演示{ public static void main(String[]args){ buffered reader buffered reader=null;字符串文件路径= e : Java Java。txt ;try { buffered reader=new buffered reader(新文件阅读器(文件路径));//创建字符处理流对象字符串s=缓冲读取器。readline();//读取文件系统。出去。println(s);} catch(找不到文件异常e){ e . printstacktrace();} catch(io异常e){ e . printstacktrace();}最后{//关闭处理流试试{ if (bufferedReader!=null){缓冲读取器。close();} } catch(io异常e){ e . printstacktrace();} } } }运行结果:将文件内容读取了出来。

  因为程序默认是以utf-8编码读取的,而此时Java.txt文件恰好是utf-8编码,所以可以将内容完整的读取出来。如果改变Java.txt文件的编码格式,读取结果会怎样呢?

  修改Java.txt 文件的编码格式为gbk,ANSI为国标码,根据电脑系统识别,当前电脑系统为gbk编码,所以将文件编码修改为ANSI编码即可。

  再次读取文件结果出现乱码

  因为程序默认以utf8编码格式读取文件,而此时文件编码为gbk,所以读取结果会产生乱码。

  如何解决这个问题?我们可以使用 转换流 来指定输入流的编码格式

  

转换流介绍

转换流有InputStreamReaderOutputStreamWriter两种。

  1.输入流阅读器:阅读器的子类,可以将输入流(字节流)转换为读者(字符流)

  2.输出流作家:作家的子类,可以将输出流(字节流)转换为作家(字符流)

  3.当处理纯文本数据时,如果使用字符流效率更高,并且可以有效解决中文问题,建议将字节流转换成字符流。

  4.可以在使用时指定编码格式(比如utf8,gbk等)

  ="maodian">

  

InputStreamReader

InputStreamReader类继承关系及构造函数

  

  InputStreamReaderReader的一个子类,它其中的构造函数InputStreamReader(InputStream,Charset)可以将一个字节输入流转换成字符输入流,同时通过Charset属性指定字符集编码。

  用转换流InputStreamReader再次读取上述示例中Java.txt文件,解决乱码问题。

  代码示例:

  

import java.io.*; public class InputStreamReaderTest { public static void main(String[] args) throws IOException { String filePath = "e:\Java\Java.txt"; FileInputStream fileInputStream = new FileInputStream(filePath); //将字节输入流,转换为字符流 并指定编码格式为 utf8 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "gbk"); //将字符流转换为功能更加强大的字符处理流 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); //读取内容 String s = bufferedReader.readLine(); System.out.println(s); //关闭流 bufferedReader.close(); }} 
运行结果:

  内容读取成功~~~

  

  

  

OutputStreamWriter

OutputStreamWriter类继承关系及构造函数

  

  OutputStreamWriterWriter的一个子类,它其中的构造函数OutputStreamWriter(OutputStream,Charset)可以将一个字节输出流转换成字符输出流,同时通过Charset属性指定字符集编码。

  代码示例:

  编程将字节流FileOutputStream转换成字符流OutputStreamWriter,并在电脑磁盘上文件hello.txt文件中指定gbk编码格式写入你好,Java!,文件路径:e:Javahello.txt

  

import java.io.*; public class OutputSteamWriterTest { public static void main(String[] args) throws IOException { String filePath = "e:\Java\hello.txt"; //将字节输出流转换为字符输出流 OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream(filePath), "gbk"); String content = "你好,Java!"; //将内容写进文件 outputStreamWriter.write(content); //关闭流 outputStreamWriter.close(); System.out.println("保存成功~~~"); }}
运行结果:

  将内容写进了hello.txt文件。

  

  

  

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注盛行IT的更多内容!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: