/**
解决数据与数据之间的传输问题。
字节流:
输入字节流:
-------| 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. oracle ORA-00604/ORA-01653

    问题描述: ORA-00604: error occurred at recursive SQL level 1ORA-01653: unable to extend table SYS.AUD$ b ...

  2. 接口自动化(Python)-利用正则表达式从返回的HTML文本中截取自己想要的值

    例如一个功能接口的返回值 是一个HTML文本: 例如我们要取上图中标识的id的值,并且这个值是动态的,这是我们就需要用到正则表达式进行匹配. 如下是正则匹配的方法(代码中都有注释): 我们在真正使用的 ...

  3. Dubbo负载均衡策略

    在集群负载均衡时,Dubbo提供了多种均衡策略,缺省为random随机调用. 可以自行扩展负载均衡策略,参见:负载均衡扩展Random LoadBalance 随机,按权重设置随机概率. 在一个截面上 ...

  4. Git在tortoiseGit以及eclipse的使用方法

    一.Git安装与简单使用 1.安装git,tortoiseGit 2.创建SSH Key 打开Git Bash,然后输入ssh-keygen生成公钥和私钥: 3.生成ppk文件. 打开puttykey ...

  5. Dapper入门教程(三)——Dapper Query查询

    介绍 查询方法(Query)是IDbConnection的扩展方法,它可以用来执行查询(select)并映射结果到C#实体(Model.Entity)类 查询结果可以映射成如下类型: Anonymou ...

  6. TCP/IP拥塞控制

    TCP/IP拥塞控制包括:慢启动和拥塞避免.其操作流程如下所述: 初始化.拥塞窗口cwnd = 1,慢启动门限ssthresh = 65535 如果没有发生拥塞 若 cwnd < ssthres ...

  7. swift3.0 对UITextField()输入框输入的内容进行监控

    首先需要继承 UITextFieldDelegate class TestViewController: UIViewController,UITextFieldDelegate{ } 添加事件委托 ...

  8. kafka在windows下的安装和配置

    博主最近在学习有关kafka的配置安装以及在spring的集成使用.但网上关于kafka的配置参考资料基本都是于linux下的配置,于是博主在整理了相关windows下kafka的配置记录在博客里.由 ...

  9. js复习---string

    对js的string的方法复习: 1.charCodeAt()  返回一个整数,代表指定位置字符串的unicode编码. strObj.charCodeAt(index) index 是处理字符的从零 ...

  10. 9. Palindrome Number 回文 my second leetcode 20170807

    Determine whether an integer is a palindrome. Do this without extra space. click to show spoilers. S ...