java 核心编程——IO流之字符流和字节流相互转换(四)

1.为什么字符流和字节流需要转换?

  这是因为有一些时候系统给你提供的只有字节流,比如说System.in标准输入流。就是字节流。你想从他那里得到用户在键盘上的输入,只能是以转换流将它转换为Reader以方便自己的程序读取输入。再比如说Socket里的getInputStream()很明显只给你提供字节流,你要不行直接用,就得给他套个InputStreamReader()用来读取。网络传输来的字符。

2.字节流和字符流怎么转换?

  2.1.字节流转换为字符流:InputStreamReader

  2.2.字符输流转换为字节流:InputStreamWriter

3.具体应用

  3.1 字节流转换为字符流

package se.io;

import java.io.*;

public class InputStreamReaderTest {

    public static void main(String[] args) {

        try {
            //构建字节输入流对象
            FileInputStream fileInputStream = new FileInputStream("E:\\test\\data3.txt");

            //构建字节字符转换流对象
            InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);

            //构建字符输入流对象
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

            //读取数据
            char[] chars = new char[1024];
            int off = 0;
            while(bufferedReader.ready()){
                off = bufferedReader.read(chars);

            }

            //打印输出
            String s = new String(chars,0,off);
            System.out.println(s);

            //关闭流
            bufferedReader.close();
            inputStreamReader.close();
            fileInputStream.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

  3.2字符流转换为字节流

package se.io;

import java.io.*;

public class OutPutStreamWriterTest {

    public static void main(String[] args) {

        try {
            //构建输出流字节对象
            FileOutputStream fileOutputStream = new FileOutputStream("E:\\test\\data4.txt");
            //构建输出流字节字符转换对象
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
            //构建字符输出流对象
            BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);

            //构建数据
            char[] chars = new char[3];
            chars[0] = ‘a‘;
            chars[1] = ‘b‘;
            chars[2] = ‘中‘;

            //输出数据
            bufferedWriter.write(chars);

            //关闭流
            bufferedWriter.close();
            outputStreamWriter.close();
            fileOutputStream.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
时间: 2024-12-06 06:39:53

java 核心编程——IO流之字符流和字节流相互转换(四)的相关文章

java 核心编程——IO流之字符流(三)

1.字符流 1.1 所有文件的存储都是字节的存储,我们日常在磁盘上保存的其实并不是文件的字符,而是先把字符转换成字节,再把这些字节储存到磁盘.在读取文件时,也是一个字节一个字节的读取,然后生成字节的序列. 1.2 字节流可以处理任何对象,但是字符流呢,.只用来处理字符或者字符串.可以这样说,字节流呢,提供了最基本IO功能,可以处理任何IO操作,但是有一点,不可以直接处理Unicode字符,为什么呢,因为Unicode字符是一个单元为2个字节的字符,而字节流的处理单元为1个字节,字符流是由Java

java 核心编程——线程之线程池(ExecutorService)(四)

1.线程池产生的背景 web服务,数据库访问等都需要处理大量的请求线程,如果每次都为每个请求创建新的线程,任务完成销毁线程,对于服务器来说,创建和销毁线程对资源的消耗都是比较大的.所以为了防止资源浪费,必须得对线程进行管理.线程池就是管理线程的高级技术. 2.线程池的功能 2.1通过对线程的管理,更合理高效的使用资源. 2.2通过对线程池的维护,可以节省创建线程的开销. 3.线程池的使用 package se.thread; import java.util.Random; import jav

java io流(字符流) 文件打开、读取文件、关闭文件

java io流(字符流) 文件打开 读取文件 关闭文件 //打开文件 //读取文件内容 //关闭文件 import java.io.*; public class Index{ public static void main(String[] args) throws Exception{ //打开文件 //字符流方式打开 //字符流每次按一个字符读取 FileReader wj = new FileReader("D:/java/kj/javanew/src/Index.java"

黑马程序员——Java基础--IO流(一)---字符流和字节流

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.IO流的介绍及体系 IO流用来处理设备之间的数据传输.java对数据的操作是通过流的方式.java用于操作流的对象都在IO包中. 输入流和输出流相对于内存设备而言:将外设中的数据读取到内存中:输入.将内存中的数据写出到外设中:输出. 流按照操作数据分为两种:字节流和字符流. 字符流的由来:其实就是字节流读取文字字节数据后,不直接操作而是先查指定的编码表,获取对应的文字,再对这个文字进行操作

io系列之字符流

java中io流系统庞大,知识点众多,作为小白通过五天的视频书籍学习后,总结了io系列的随笔,以便将来复习查看. 本篇为此系列随笔的第一篇:io系列之字符流. IO流 :对数据的传输流向进行操作,java中将这种操作行为本身封装为对象,以供使用. Input and Output java将io流对象都在IO包中.(java.IO.*) 分类: 按照数据种类分: 字节流 和 字符流, 按照数据流向分: 输出流 和 输入流. 字节流抽象类: InputStream OutputStream 字符流

JAVA之旅(二十四)——I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习

JAVA之旅(二十四)--I/O流,字符流,FileWriter,IOException,文件续写,FileReader,小练习 JAVA之旅林林总总也是写了二十多篇了,我们今天终于是接触到了I/O了.如果你初学,不懂IO流,你可以从前往后慢慢看,但是你工作了一段时间你会发现,流的使用场景以及技术点是非常的强硬的,我们势必要掌握这个知识点,如果你觉得翻阅API比较鼓噪,看视频得不到精髓,看书看不到要点,你就跟随我的JAVA之旅,一起去探索吧! 一.I/O概述 I/O全名:Input Output

Java核心编程开发

Java核心编程开发,本部分内容侧重于java j2se核心部分,共50学时左右,主要内容包括:面向对象编程的六大基本原则及常见八种设计模式.Java核心类库的高级应用,如:文件输入输出流处理.反射.序列化.泛型.多线程.网络编程.DOM4J. 课程内容: 01.Java 中使用 IO 实现数据处理(共8讲) 02.Java 中使用XML实现数据处理(共6讲) 03.Java中的多线程编程(共5讲) 04.多线程高级应用(共5讲) 05.Java中的网络编程(共4讲) 06.网络编程高级应用(共

Java核心编程快速学习

Java核心编程部分的基础学习内容就不一一介绍了,本文的重点是JAVA中相对复杂的一些概念,主体内容如下图所示. 反射reflect是理解Java语言工作原理的基础,Java编译器首先需要将我们编写的.java源文件编译为.class字节码,然后再JVM虚拟机上运行,接下来通过一个表格,来了解反射的基本操作. 功能 示例 泛化的Class引用 Class<?> intClass = int.class Class<? extends Number> bounded = int.cl

JAVA 18 (IO流之字符流)

字节流两个基类 InputStream OutputStream 字符流的两个基类 Reader Writer 这四个抽象类派生出来的子类都是以其父类名作为子类后缀的 字符流: Writer 以操作文件为主来演示 创建一个文件并写入数据. 子类的后缀名是父类名,前缀名是功能. FileWriter fw = new FileWriter("C:\\Users\\zx\\Desktop\\demo.txt"); //创建文件,明确数据要存放的目的地,如果已存在文件,则覆盖文件. fw.w