java基础篇IO流的规律

前两篇降了IO流中的字节流和字符流复制的例子,今天来总结一下IO流的规律

掌握好IO流的规律,再开发中会很好用

下面来总结一下:

1,明确源和目的

源:输入流 InputStream 和Reader

目的:输出流 OutputStream 和Writer

2,操作的数据是否是纯文本。

是:使用字符流

不是:使用字节流

3,当体系明确后,在明确要使用哪个具体的对象,通过设备来进行区分

源设备: 内存,硬盘,键盘

目的设备: 内存,硬盘,控制台

这里的源就是你想进行的操作,比如说你想从c盘复制一个文件到d盘,那么C磁盘中要操作的文件就是源,如果是文本文件的话,那么源就可以用字符流。如果是图片,MP3

文件等那么源就是字节流,再举个例子,比如说你要读取键盘录入,那么这是你是不是要读取键盘错做的字符啊,这是你就应该想到是用输入流,读取嘛

下面贴出一个键盘录入的例子

分析:

读取键盘录入:

System.out:对应单的是标准的输出设备,控制台。

Syste.in:对应的标准输入设备:键盘,

需求:

通过键盘录入数据,

当录入一行数据后,就将该行数据进行打印。

如果录入的数据时over。那么将停止录入

这里的源就是我刚说的键盘,目的呢,是控制台,既然源是键盘,那么就要用到输入流,相反目的就是输出流

import java.io.*;//这里我导入了io所有的包

class  ReadDemo

{

public static void main(String[] args)throws IOException

{

InputStream in=System.in;

StringBuilder sb=new StringBuilder();

while(true)

{

int ch=in.read();

if(ch==‘\r‘)

continue;

if(ch==‘\n‘)

{

String s=sb.toString();

if("over".equals(s))

break;

System.out.println(s);

sb.delete(0,sb.length());

}

else

sb.append((char)ch);

}

}

}

扩展一下,想要把录入的数据按照指定的编码表(UTF-8),讲数据保存到文件中

目的:OutPurStream Writer

是否是纯文本 是 Writer

设备:硬盘 一个文件,使用FileWriter

但是FileWriter是使用默认编码表GBK

但是存储时需要加入指定的编码表,utf-8,而指定的编码表只有转换流可以指定

所以要使用的对象时OutPurStreamWriter

而该转换流对象接受一个字节输出流,而且还可以操作的文件的字节输出流FIleOutPutStream

OutputStreamWriter osw = new OutPutSreamWriter(new FileOutputStream("d.txt"),"utf-8");

需要高效吗,需要那么就需要建立缓冲区

BufferWriter bufw =new BufferWriter(osw);

所以,记住转换流什么使用,字符和字节之间的桥梁,通常涉及到字符编码转换时需要用到转换流

import java.io.*;

class  Demo

{

public static void main(String[] args)throws IOException

{

//获取键盘录入对象

InputStream in =System.in;

//将字节流对象转成字符流对象,使用转换流。InputStreamReader

InputStreamReader isr=new InputStreamReader(in);

//为了提高效率,将字符串进行缓冲区技术高效操作使用BufferedReader

BufferedReader bufr=new BufferedReader(isr);

String line=null;

while((line=bufr.readLine())!=null)//读取

{

if("over".equals(line))

break;

System.out.println(line);

}

bufr.close();//关闭流

}

}

java基础篇IO流的规律

时间: 2024-10-17 05:11:43

java基础篇IO流的规律的相关文章

java基础之IO流(一)

java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典型数据源与目标媒介包括磁盘.网络.内存等等. IO流的分类: 按流向分为:输入流和输出流(本地内存为参考) 按处理数据单位:字符流和字节流 按照是否与特定的地方相连(磁盘.网络.内存):节点流和处理流 节点流:可以从或向一个特定的地方(节点)读写数据. 处理流:是对一个已存在的流的连接和封装,通过所

Java基础知识IO流(其他类)

IO包中的其他类 打印流 PrintWriter与PrintStream 序列流 SequenceInputStream 切割文件 操作对象 ObjectInputStream与ObjectOutputStream 管道流 PipedInputStream和PipedOutputStream RandomAccessFile类 (随机访问文件) 操作基本数据类型 DataInputStream和DataOutputStream类 操作数组的流 ByteArrayInputStream/ByteA

Java基础之IO流

1.IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据. (2)java中对数据的操作都是通过流的方式. (3)java用于操作流的类都在io包中. (4)按照流操作的数据的类型不同:分为字节流和字符流.字符流是为了方便中文的操作而来的. (5)按照流的流向不同分为:输入流,输出流 2.IO流常用基类: (1)字节流 输出字节流:OutputStream:字节写入流抽象类 |--->FileOutputStream: 字节写入流 |--->BufferedOutputStream:

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基础8(io流3)

1.LineNumberReader: public int getLineNumber():获取行号 public void setLineNumber(int lineNumber):设置起始行号 String readLine():读取一行 2.操作基本数据类型的流 DataInputStream:读数据 DataOutputStream:写数据 作用:可以操作基本类型的流对象,其读写顺序必须一致,否则数据有问题. public static void main(String[] args

Java基础之IO流学习总结

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

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

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

java基础06 IO流

IO用于在设备间进行数据传输的操作. Java IO流类图结构:   IO流分类 字节流: InputStream FileInputStream BufferedInputStream OutputStream FileOutputStream BufferedOutputStream 字符流: Reader FileReader BufferedReader Writer FileWriter BufferedWriter 一.FileInputStream/FileOutputStream

Java基础:IO流之字节流和字符流

1. 流的概念 流(stream)的概念源于UNIX中管道(pipe)的概念.在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备.外部文件等. 一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL. 流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流.用户可以从输入流中读取信息,但不能写它.相反,对输出流,只能往输入流写,而不能读它. 实际上,流的源端和目的端可简单地看成是字节的生产者和消费