Java基础二十

1 转换流

1.1 转换流出现的原因

  • 由于字节流操作中文的时候不是很方便,所以,Java就提供了转换流。
  • 字符流=字节流+编码表。

1.2 String类的编码和解码功能

  • 方法:通过指定的编码,将二进制的数据转换为字符串,即解码
String(byte[] bytes, Charset charset) 
  • 方法:通过制定的编码,将字符串转换为二进制的数据,即编码
public byte[] getBytes(Charset charset)
  • 示例:
package com.xuweiwei;

import java.io.UnsupportedEncodingException;

public class StringDemo {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String str = "abcdef";

        //编码
        byte[] bytes = str.getBytes("UTF-8");

        for (byte aByte : bytes) {
            System.out.println("aByte = " + aByte +"、" );
        }

        //解码
        System.out.println("解码:"+new String(bytes,"UTF-8"));
    }
}

2 OutputStreamWriter

  • 作用:将字节输出流转换为字符输出流。
  • 构造方法:根据指定的编码将字节流转换为字符流
public OutputStreamWriter(OutputStream out, String charsetName) throws UnsupportedEncodingException
  • 示例:
package com.xuweiwei;

import java.io.*;

public class OutputStreamWriterDemo {
    public static void main(String[] args) throws IOException {
        Writer ow = new OutputStreamWriter(new FileOutputStream("ow.txt"),"utf-8");

        ow.write("你好,许威威");

        ow.close();

    }
}

3 InputStreamReader

  • 将字节输入流转换为字符输入流
  • 构造方法:
public InputStreamReader(InputStream in, String charsetName) throws UnsupportedEncodingException
  • 示例:
package com.xuweiwei;

import java.io.*;

public class InputStreamReaderDemo {
    public static void main(String[] args) throws IOException {
        Reader reader = new InputStreamReader(new FileInputStream("ow.txt"),"utf-8");

        char[] buffer = new char[1024];

        int len = 0;

        while(-1 != (len = reader.read(buffer))){
            System.out.println(new String(buffer,0,len));
        }

        reader.close();
    }
}

4 转换流的简化写法

  • 抓换流的名字比较长,而我们常见的操作都是按照本地默认编码实现的,所以, 为了简化我们的书写,转换流就提供了对应的子类。
  • 例如:FileWriter和FileReader。
  • 示例:
package com.xuweiwei;

import java.io.FileWriter;
import java.io.IOException;

public class FileWriterDemo {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("fw.txt");

        fw.write("你好啊");

        fw.close();
    }
}

5 字符缓冲流

  • BufferedWriter

    • 特殊功能:写一个行分隔符
public void newLine()   throws IOException
  • BufferedReader

    • 特殊功能:读一个行分隔符  
public String readLine()
  • 示例:
package com.xuweiwei;

import java.io.*;

public class BufferedWriterDemo {
    public static void main(String[] args) throws IOException {
        BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));

        bw.write("你好啊");

        bw.flush();

        bw.close();

    }
}
  • 示例:
package com.xuweiwei;

import java.io.FileWriter;
import java.io.IOException;

public class FileWriterDemo {
    public static void main(String[] args) throws IOException {
        FileWriter fw = new FileWriter("fw.txt");

        fw.write("你好啊");

        fw.close();
    }
}
  • 示例:
package com.xuweiwei;

import java.io.*;

public class CopyDemo {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader("br.txt"));

        BufferedWriter bw = new BufferedWriter(new FileWriter("bw.txt"));

        String line = null;
        while(null != (line = br.readLine())){
            bw.write(line);
            bw.newLine();
            bw.flush();
        }

        bw.close();
        br.close();

    }
}

原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/9386439.html

时间: 2024-09-30 05:16:49

Java基础二十的相关文章

Java基础二十二

1 多线程的概述 1.1 进程 就是正在运行的程序.是系统进行资源分配和调度的独立单位.每一个进程都有其自己的内存空间和系统资源. 1.2 多进程的意义? 单进程的计算机只能做一件事情,而我们现在的计算机可以做多件事情.例如:一边玩游戏,一边听音乐. 现在的计算机都支持多进程的,就可以一个时间段内执行多个任务,并且可以提高CPU的使用率. 1.3 线程 在一个进程内又可以执行多个任务,而这每一个任务我们就可以看成是一个线程. 线程是进程的执行单元(执行路径). 单线程:如果程序有一条执行路径.

Bootstrap <基础二十五>警告(Alerts)

警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个可选的关闭按钮.为了创建一个内联的可取消的警告框,请使用 警告(Alerts) jQuery 插件. 您可以通过创建一个 <div>,并向其添加一个 .alert class 和四个上下文 class(即 .alert-success..alert-info..alert-warning..ale

Bootstrap &lt;基础二十六&gt;进度条

Bootstrap 进度条.在本教程中,你将看到如何使用 Bootstrap 创建加载.重定向或动作状态的进度条. Bootstrap 进度条使用 CSS3 过渡和动画来获得该效果.Internet Explorer 9 及之前的版本和旧版的 Firefox 不支持该特性,Opera 12 不支持动画. 默认的进度条 创建一个基本的进度条的步骤如下: 添加一个带有 class .progress 的 <div>. 接着,在上面的 <div> 内,添加一个带有 class .prog

Java进阶(二十五)Java连接mysql数据库(底层实现)

Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜索.特将之前使用的方法做一简单的总结.也能够在底层理解一下连接数据库的具体步骤. 实现 首先需要导入相关的jar包,我使用的为:mysql-connector-java-5.1.7-bin.jar. 下面来看一下我所使用的数据库连接方法类: MysqlUtil.java package cn.edu

Bootstrap &lt;基础二十八&gt;列表组

列表组.列表组件用于以列表形式呈现复杂的和自定义的内容.创建一个基本的列表组的步骤如下: 向元素 <ul> 添加 class .list-group. 向 <li> 添加 class .list-group-item. 下面的实例演示了这点: <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 基本的列表组</title> <link href="/boo

Bootstrap &lt;基础二十二&gt;超大屏幕(Jumbotron)

Bootstrap 支持的另一个特性,超大屏幕(Jumbotron).顾名思义该组件可以增加标题的大小,并为登陆页面内容添加更多的外边距(margin).使用超大屏幕(Jumbotron)的步骤如下: 创建一个带有 class .jumbotron. 的容器 <div>. 除了更大的 <h1>,字体粗细 font-weight 被减为 200px. 下面的实例演示了这点: <!DOCTYPE html> <html> <head> <tit

菜鸟学Java(二十)——你知道long和Long有什么区别吗?

Java中数据类型分两种: 1.基本类型:long,int,byte,float,double2.对象类型:Long,Integer,Byte,Float,Double其它一切java提供的,或者你自己创建的类. 其中Long叫 long的包装类.Integer.Byte和Float也类似,一般包装类的名字首写是数值名的大写开头. 什么是包装类? 在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算.所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以

shell基础二十篇

shell基础二十篇 编者按:由 wingger  整理的 shell基础十二篇 以及L_kernel补充的第十三--二十篇,涉及shell 编程及使用的各个方面,又附有大量的例子,极适合初学者系统学习.如果配合網中人的shell 十三問? ,效果更加明显. 这里是其中的第十章 sed.  其他各章可察看相应的 link. shell基础1:文件安全与权限 http://bbs.chinaunix.net/thread-434579-1-1.html 附:Linux的用户和用户组管理 http:

Bootstrap&lt;基础二十&gt; 标签

Bootstrap 标签.标签可用于计数.提示或页面上其他的标记显示.使用 class .label 来显示标签,如下面的实例所示: <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 标签</title> <link href="/bootstrap/css/bootstrap.min.css" rel="stylesheet"> <s