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安装好之 ...
随机推荐
- 终结 finalize()和垃圾回收(garbage collection)
1.为什么要有finalize()方法? 假定你的对象(并非使用new)获得了一块"特殊"的内存区域,由于垃圾回收器只知道释放那些经由new分配的内存,所以他不知道该如何释放该对象 ...
- MySQL之增_insert-replace
MySQL增删改查之增insert.replace 一.INSERT语句 带有values子句的insert语句,用于数据的增加 语法: INSERT [INTO] tbl_name[(col_nam ...
- 【CPP】概览
[使用C语言的七个步骤]1:定义程序目标 2:设计程序 3:编写代码 4:编译 5:运行 6:测试和调试 7:维护和修改 [程序细节] :#include 指示和头文件 include&l ...
- HTML5的三种存储方式以及区别
首先将存储方式前要先知道为什么要使用他:一是利用本地数据,介绍网络请求:二是弱网环境下,高延迟,低带宽,要把数据本地化: 1.本地存储localStorage和sessionStorage 介绍: 存 ...
- Android 组件化/模块化之路——在展示层搭建MVP结构
Android 组件化/模块化之路——在展示层搭建MVP结构 什么是MVP Model–View–Presenter (MVP) 源于 Model–View–Controller (MVC) 的结构设 ...
- linux几个重要的按键
我们在用Windows系统时,有没有感觉快键键让我们工作更有效率,在Linux系统中仍有很好用的快捷键,这些快捷键可以辅助我们进行指令的编写与程序的中断呢,下面介绍几个经常用到的快捷键. 一.Tab- ...
- Qt控件窗体区域区分
控件窗体区域区分几何参数: 指的是窗口的大小和位置,一个窗口有两套几何参数,一套是窗口外边框所占的矩形区域,另一套是窗口客户区所占的矩形区域,所谓窗口客户区就是窗口中除去边框和标题栏用来显示内容的区域 ...
- Java中Lock,tryLock,lockInterruptibly的区别
转载自:https://www.zhihu.com/question/36771163/answer/68974735 ReentrantLock 锁有好几种,除了常用的lock ,tryLock , ...
- .net core 2.0学习笔记(六):Remoting核心类库RealProxy迁移
在学习.net core的过程中,我们已经明确被告知,Remoting将不会被支持.官方的解释是,.net framework 类型包含了太多的Runtime的内容,是一个非常重量级的服务实现,已被确 ...
- 用notepad如何在每行结尾处添加特殊字符
在处理关键词的时候,有时候需要将每一行的末尾添加某个特殊字符,较常用的一种方法就是用excel拼接起来.今天要分享是一种简单的方法,用notepad就可以很容易实现,主要用到notepad中的扩展匹配 ...