/**
解决数据与数据之间的传输问题。
字节流:
输入字节流:
-------| InputStream 所有输入字节流的基类。抽象类。
-----------| FileInputStream 读取文件的输入字节流。
-----------| BufferedInputStream 缓冲输入字符的字节流 该类内部 维护了一个8kb的字节数组。该类出现的目的 是为了提高读取文件数据的效率。 输出字节流:
-------| OutputStream 所有输出字节流的基类。抽象类。
-----------| FileOutputStream 向文件输出数据 的输出字节流。
-----------| BufferedOutputStream 缓冲输出字节流,为了提高写入文件的效率。类内部也是维护了一个8kb的字节数组。 什么情况使用字节流?
字节流都是为了读取到2进制的数据。
读取到的数据 不需要经过编码 解码的情况下, 可以使用字节流 such as: 图片数据 图片数据 不需要变成我们可以读懂的字符流。不需要进过解码
如果读到的数据 需要转换成 我们读的懂的字 那就必须要转换成字符流
字符流=字节流+编码(解码) 字符流:
输入字符流:
-------| Reader 所有输入字符流的基类。抽象类。不可以直接使用
-----------| FileReader 读取文件字符的输入字符流
-----------| BufferedReader 缓冲输入字符流 该类出现的目的 是为了提高读取文件字符的效率。内部是维护了一个8192个长度字符数组。除了提高效率,并且还拓展了功能, 多了个readline()的功能 输出字符流:
-------| Writer 所有输出字符流的基类。抽象类
-----------| FileWriter 向文件输出字符数据的输出字符流。
-----------|BufferedWriter 缓冲输出字符流。为了提高写入文件的效率和拓展了功能newline() 什么时候用到字符流呢?
读取到的字节数据需要被转换成字符数据,这时候我们就使用字符流,如果是读写的都是字符数据这时候我们需要用字符流。 转换流:
-------|InputStreamReader 输入字节流的转换流。可以吧一个输入字节流 转换成输入字符流,(前面字节,后面字符)
-------|OutputStreamReader 输出字节流的转换流 转换流的作用:
1.可以吧对应的字节流转换成字符流使用。
2. */
public class demo1 {
public static void main(String[] args) throws Exception {
testInput();
}
public static void testInput() throws Exception{ //标准输入流,默认读取控制台。用in来读控制台的内容
InputStream in = System.in;
int read = in.read();
System.out.println(read);
}
}

该demo输出的是字节流

abc
97

如果想要将输入内容完整的输出到控制台 那么我们就需要将字节流转换为字符流。

 public class demo1 {
public static void main(String[] args) throws Exception {
testInput();
}
public static void testInput() throws Exception{ //标准输入流,默认读取控制台。用in来读控制台的内容
System.out.println("输入:");
InputStream in = System.in;
//int read = in.read(); //将in转换为字符流
InputStreamReader iReader = new InputStreamReader(in); BufferedReader bReader = new BufferedReader(iReader);
System.out.println("输出:"+bReader.readLine());
}
}public class demo1 {
public static void main(String[] args) throws Exception {
testInput();
}
public static void testInput() throws Exception{ //标准输入流,默认读取控制台。用in来读控制台的内容
System.out.println("输入:");
InputStream in = System.in;
//int read = in.read(); //将in转换为字符流
InputStreamReader iReader = new InputStreamReader(in); BufferedReader bReader = new BufferedReader(iReader);
System.out.println("输出:"+bReader.readLine());
}
}
输入:
abc
输出:abc

转换流将输出字节流 转换为输出字符流。

     public static void testOutput() throws Exception, IOException {
Socket socket = new Socket(InetAddress.getLocalHost(), 9090);
//获取到字节流
OutputStream outputStream = socket.getOutputStream();
//将输出字节流转化为输出字符流。
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
outputStreamWriter.write("ok");
}

转换流的第二个作用

2.读写文件的时候FileReader,FileWriter默认使用的是GBK编码表,不能由自己来指定码表来读写数据。而转换流可以指定码表的读写转换数据。

     public static void writeFile() throws IOException{
FileOutputStream fileOutputStream2 = new FileOutputStream("D:\\a.txt");
OutputStreamWriter outputStreamWriter2 = new OutputStreamWriter(fileOutputStream2,"utf-8");
outputStreamWriter2.write("sony是猪");
outputStreamWriter2.close();
}
public static void ReadFile() throws IOException{
FileInputStream fileInputStream = new FileInputStream("D:\\a.txt");
//创建转换流并且创建码表
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "utf-8");
int content = 0;
while((content = inputStreamReader.read())!=-1){
System.out.print((char)content);
}
fileInputStream.close();
}
sony是猪

Java基础学习 —— io的更多相关文章

  1. Java基础学习-IO流

    package IObasics; import java.io.FileWriter; import java.io.IOException; /*IO流 * 通过数据流.序列化和文件系统提供系统输 ...

  2. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  3. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  4. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  5. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  6. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  7. java基础学习总结——开篇

    java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...

  8. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

  9. java基础学习总结——java环境变量配置(转)

    只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...

随机推荐

  1. div标签清除float浮动样式方法

    方法一. 这个方法来源于positioniseverything ,通过after伪类实现,完全兼容当前主流浏览器. 1 <style type="text/css"> ...

  2. github、gitlab 管理多个ssh key

    第一种方法: 通过 git 命令行来操作 1.cd ~/.ssh 2.ls 注:如果.ssh 目录下有文件存在那么表示之前添加过 3. ssh-keygen -t rsa -C "xxxxx ...

  3. matlab怎么查看已安装哪些工具箱和…

    问题描述:matlab怎么查看已安装哪些工具箱和它们相应的版本 解决方法:在命令行里敲击der,回车 效果:

  4. 表达式求值(栈方法/C++语言描述)(二)

    上篇中完成了对表达式求值的整体过程,接下来看看如何处理不同类型的token. 对运算数的处理比较简单,它直接调用函数strtod(),将字符串中的运算数转换为浮点类型并将它压入运算数栈中: void ...

  5. Python Socket 简单聊天室1

    这是第一版,最简单的,仅仅实现了通信,你收我发,我收你发而已.下篇将介绍,基于异步多线程的聊天室: 客户端: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...

  6. java大数取余

    java大数取余: 类方法:BigInteger.divideAndRemainder() 返回一个数组,key = 0为商key = 1为余数 import java.util.*; import ...

  7. Fluent Validation with Web Api 2

    using FluentValidation;using FluentValidation.Attributes;using System;using System.Collections.Gener ...

  8. HTML+CSS+JS简介

    1.HTML与 CSS 1 1.1 HTML 1 1.2 HTML5 2 1.2.1 HTML5的特性 3 1.3  CSS 4 2.JavaScript 6 2.1特性 7 2.2编程 8 3.Sp ...

  9. Jedis与Redisson选型对比

    1 概述 1.1.       主要内容 本文的主要内容为对比Redis的两个框架:Jedis与Redisson,分析各自的优势与缺点,为无线云管理项目中Redis编程模型的选择提供参考. 2.    ...

  10. 复杂DIV交错布局

    问题: 请写一段html和CSS实现图中布局: 解析: 考察实现此种效果布局的几种方式. --- 答案:TBD