Java基础学习 —— io

 1 /**
 2 解决数据与数据之间的传输问题。
 3 字节流:
 4 输入字节流:
 5 -------| InputStream 所有输入字节流的基类。抽象类。
 6 -----------| FileInputStream 读取文件的输入字节流。
 7 -----------| BufferedInputStream 缓冲输入字符的字节流 该类内部 维护了一个8kb的字节数组。该类出现的目的 是为了提高读取文件数据的效率。
 8
 9 输出字节流:
10 -------| OutputStream 所有输出字节流的基类。抽象类。
11 -----------| FileOutputStream 向文件输出数据 的输出字节流。
12 -----------| BufferedOutputStream 缓冲输出字节流,为了提高写入文件的效率。类内部也是维护了一个8kb的字节数组。
13
14 什么情况使用字节流?
15 字节流都是为了读取到2进制的数据。
16 读取到的数据 不需要经过编码 解码的情况下, 可以使用字节流 such as: 图片数据 图片数据 不需要变成我们可以读懂的字符流。不需要进过解码
17 如果读到的数据 需要转换成 我们读的懂的字 那就必须要转换成字符流
18 字符流=字节流+编码(解码)
19
20
21 字符流:
22 输入字符流:
23 -------| Reader 所有输入字符流的基类。抽象类。不可以直接使用
24 -----------| FileReader 读取文件字符的输入字符流
25 -----------| BufferedReader 缓冲输入字符流 该类出现的目的 是为了提高读取文件字符的效率。内部是维护了一个8192个长度字符数组。除了提高效率,并且还拓展了功能, 多了个readline()的功能
26
27 输出字符流:
28 -------| Writer 所有输出字符流的基类。抽象类
29 -----------| FileWriter 向文件输出字符数据的输出字符流。
30 -----------|BufferedWriter 缓冲输出字符流。为了提高写入文件的效率和拓展了功能newline()
31
32 什么时候用到字符流呢?
33 读取到的字节数据需要被转换成字符数据,这时候我们就使用字符流,如果是读写的都是字符数据这时候我们需要用字符流。
34
35
36 转换流:
37 -------|InputStreamReader 输入字节流的转换流。可以吧一个输入字节流 转换成输入字符流,(前面字节,后面字符)
38 -------|OutputStreamReader 输出字节流的转换流
39
40 转换流的作用:
41   1.可以吧对应的字节流转换成字符流使用。
42   2.
43
44  */
45 public class demo1 {
46     public static void main(String[] args) throws Exception {
47         testInput();
48     }
49     public static void testInput() throws Exception{
50
51         //标准输入流,默认读取控制台。用in来读控制台的内容
52         InputStream in = System.in;
53         int read = in.read();
54         System.out.println(read);
55     }
56 }

该demo输出的是字节流

abc
97

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

 1 public class demo1 {
 2     public static void main(String[] args) throws Exception {
 3         testInput();
 4     }
 5     public static void testInput() throws Exception{
 6
 7         //标准输入流,默认读取控制台。用in来读控制台的内容
 8         System.out.println("输入:");
 9         InputStream in = System.in;
10         //int read = in.read();
11
12         //将in转换为字符流
13         InputStreamReader iReader = new InputStreamReader(in);
14
15         BufferedReader bReader = new BufferedReader(iReader);
16         System.out.println("输出:"+bReader.readLine());
17     }
18 }public class demo1 {
19     public static void main(String[] args) throws Exception {
20         testInput();
21     }
22     public static void testInput() throws Exception{
23
24         //标准输入流,默认读取控制台。用in来读控制台的内容
25         System.out.println("输入:");
26         InputStream in = System.in;
27         //int read = in.read();
28
29         //将in转换为字符流
30         InputStreamReader iReader = new InputStreamReader(in);
31
32         BufferedReader bReader = new BufferedReader(iReader);
33         System.out.println("输出:"+bReader.readLine());
34     }
35 }

输入:
abc
输出:abc

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

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

转换流的第二个作用

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

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

sony是猪

时间: 2024-10-25 08:23:15

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

JAVA基础学习---IO流总结

Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作.   IO流的分类 根据处理数据类型的不同分为:字符流和字节流 根据数据流向不同分为:输入流和输出流 字符流和字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象.本质其实就是基于字节流读取时,去查了指定的码表. 字节流和字符流

java 基础学习 IO流 学习总结

File类概述和构造方法: File类的概述 文件和目录路径名的抽象表示形式  构造方法 public File(String pathname) public File(String parent,String child) public File(File parent,String child) 创建功能 public boolean createNewFile() public boolean mkdir() public boolean mkdirs() 删除功能 public boo

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s

转载:java基础学习总结——java读取properties文件总结

java基础学习总结--java读取properties文件总结 一.java读取properties文件总结 在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下: 1.1.项目的

java 基础学习

a+b: 1 import java.util.Scanner; 2 public class Main { 3 4 public static void main(String args[]){ 5 Scanner cin=new Scanner(System.in); 6 int a,b; 7 a=cin.nextInt(); 8 b=cin.nextInt(); 9 System.out.println(a+b); 10 11 } 12 } 字符串.字符输入: 1 import java.

Java基础学习笔记

File 的高级获取功能 String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录 示例 import java.io.File; class FileDemo9 { public static void  main(String[] args) { //获取E:下所有目录或者文件名称 File file=new  File("E:\\");//1.构建文件对象 String[]  fileNames=file.list();//2.获取E

java基础学习总结——网络编程

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——网络编程 一.网络基础概念 首先理清一个概念:网络编程 != 网站编程,网络编程现在一般称为TCP/IP编程. 二.网络通信协议及接口 三.通信协议分层思想 四.参考模型 五.IP协议 每个人的电脑都有一个独一无二的IP地址,这样互相通信时就不会传错信息了. IP地址是用一个点来分成四段的,在计算机内部IP地址是用四个字节来表示的,一个字节代表一段,每一个字节代表的数最大只能到达255. 六.TCP协议和UD

java基础学习总结——流

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——流 一.JAVA流式输入/输出原理 流是用来读写数据的,java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的.怎么把文件里面的数据读出来呢?你可以把文件想象成一

JAVA基础学习流程

JAVA基础学习: 第一步:学习JAVA的开发环境配置.开发第一个Java程序.也建议大家开始使用eclipse等IDE,不必纠结是不是一定要从记事本开始. 第二步:学习数据类型.运算符.变量.这是编程的基础,是程序的“砖块”.这些内容大多数编程语言都有,而且非常类似. 第三步:学习控制语句.这是编程的基础,是程序的“混凝土”.有了控制语句+变量,理论上你就可以写任意的程序了.因此,这是进入程序的门槛,需要大量的练习. 第四步:学习面向对象基础.通过类.对象.包等基本概念讲解.学习的时候,一定要