Java基础学习 —— io
/**
解决数据与数据之间的传输问题。
字节流:
输入字节流:
-------| 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的更多相关文章
- Java基础学习-IO流
package IObasics; import java.io.FileWriter; import java.io.IOException; /*IO流 * 通过数据流.序列化和文件系统提供系统输 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- 尚学堂JAVA基础学习笔记
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...
- Java基础学习-- 继承 的简单总结
代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...
- Java基础学习中一些词语和语句的使用
在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...
- 转载-java基础学习汇总
共2页: 1 2 下一页 Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3 Java基础学习总结——Java对象的序列化和 ...
- java基础学习总结——开篇
java是我学习的第一门编程语言,当初学习java基础的时候下了不少功夫,趁着这段时间找工作之际,好好整理一下以前学习java基础时记录的笔记,当作是对java基础学习的一个总结吧,将每一个java的 ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
- java基础学习总结——java环境变量配置(转)
只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...
随机推荐
- Java中实现十进制数转换为二进制的三种思路
Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ...
- 七、vue中v-for有时候对页面不会重新渲染,数组变化后如何到渲染页面
v-for不能进行双向数据绑定,页面渲染完成后,再次更改v-for遍历的数据,js里面打印的数据看到数据值已经更改,但是页面的数据就是没有渲染,这是为什么呢? vue中v-for和angularj ...
- css的选择器的优先级
css覆盖是在打代码的时候,开发者很普通很普通,也是很经常经常用到的,但是容易混淆他们之间的优先级. [][][] 第一个是id,第二个是class,第三个是元素名.有一个就加一.比较这个三位数的大小 ...
- little bird
LITTLE BIRD Bzoj 3831 相对而言是一道比较简单的DP,不过它需要用单调队列优化.首先是朴素O(n2), if(d[j]>f[i]) f[i]=min(f[i],f[j]); ...
- Apache Kafka系列(一)
摘要: 1.Apache Kafka基本概念 2.Kafka的安装 3.基本工具创建Topic 本文基于centos7, Apache Kafka 0.11.0 一.基本概念 Apache Kafka ...
- Quartus16.0如何使用TCL脚本
前言 TCL脚本语言在EDA工具中使用频繁,本文主要介绍使用TCL脚本文件进行引脚分配,避免手动分配以及分配出错: 流程 1.准备好你的TCL脚本文件,举个栗子(脚本文件内容): 2.在Quartus ...
- Android 组件化/模块化之路——在展示层搭建MVP结构
Android 组件化/模块化之路——在展示层搭建MVP结构 什么是MVP Model–View–Presenter (MVP) 源于 Model–View–Controller (MVC) 的结构设 ...
- 关于Uncaught SyntaxError: Unexpected token o in JSON at position 1,chrome持续报错的相关解析
今天跟大家分享我前两天遇见的一个BUG,说出来很难受,因为这个BUG花了我一个多小时去找原因,后来莫名其妙的故障消失了,强迫症犯了的我,居然花了2个多小时去故意再制造这个BUG,只想弄明白WHY??? ...
- %appdata%目录下配置文件修改
%appdata%目录下配置文件修改 1.假设%appdata%\leez Program目录下有Cache子目录和配置文件Config.ini内容为: [Version] Version=1.0.0 ...
- Vue2.0父子组件之间和兄弟组件之间的数据交互
熟悉了Vue.js的同级组件之间通信,写此文章,以便记录. Vue是一个轻量级的渐进式框架,对于它的一些特性和优点,请在官网上进行查看,不再赘述. 使用NPM及相关命令行工具初始化的Vue工程,目录结 ...