java中IO流
Posted libertyo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中IO流相关的知识,希望对你有一定的参考价值。
JAVA io流
一、IO流原理及其相关概念
- I/O是Input/Output的缩写,IO技术用于处理设备之间的数据传输,在java程序中对于数据的输入/输出操作以“流(stream)”的方式进行
- java.io包下提供了分钟“流”类和接口,用于获取不同种类的数据,并通过标准的方法输入或输出数据(输入和输出是相对(内存)的概念,我们站位在程序/内存的角度)
二、IO流的分类
- 按操作数据单位不同分为:字节流(8bit)、字符流(16bit)
- 非文本数据一般使用字节流,文本数据使用字符流(一个字符char类型占2字节)
- 按数据流的流向不同分为:输入流、输出流
- 按流的角色不同分为:节点流、处理流(通俗的讲:我们要洗澡,我们要将一个池子的水放到浴缸里面,我们可以直接在两者之间建一根水管,让水流进去,这就是字节流,如果我们要加快水流的速度,对水管进行一系列的改造,这个就是处理流6)
抽象基类 | 字节流 | 字符流 |
---|---|---|
输入流 | InputStream(字节输入 流) | Reader(字符输入流) |
输出流 | OutputStream(字节输出流) | Writer(字节输出流) |
- 抽象类不能实例化,不一定有抽象方法
- JAVA中IO流涉及的类非常多,但其多而规则,所有的类都是从以上的4个抽象基类派生的
- 由这4个抽象基类派生的子类名称都是以其父类作为子类的后缀名
抽象基类 | 文件流(节点流) | 缓冲流(处理流的一种) |
---|---|---|
InputStream | FileInputStream | BufferedInputStream |
OutputStream | FileOutputStream | BufferedOutputStream |
Writer | FileWriter | BufferedWriter |
Reader | FileReader | BufferedReader |
- JVM有多种垃圾回收算法,但是对于物理连接比如:数据库连接、输入输出流、Socket连接无能为力,需要手动关闭。
package priv.stream.java;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderWriterTest
public static void main(String[] args) throws IOException
// 1.实例化File类的对象,指明要操作的文件
File file = new File("E:\\\\原D盘文件\\\\code\\\\java\\\\基础语法\\\\src\\\\priv\\\\stream\\\\java\\\\hello.txt");
System.out.println(file.getAbsoluteFile());
//2.提供具体的流
FileReader fr = new FileReader(file);
//3.数据的读入
int data = fr.read();
while (data != -1)
System.out.print((char)data);
data = fr.read();
//3.数据的读入(简化)
int data;
while(( data = fr.read() )!=-1)
System.out.print((char)data);
fr.close();
上面的异常是通过抛出来解决,下面是通过try-catch-finally来解决(快捷键Alt+Ctrl+T)
package priv.stream.java;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderWriterTest
public static void main(String[] args)
FileReader fr = null;
try
File file = new File("E:\\\\原D盘文件\\\\code\\\\java\\\\基础语法\\\\src\\\\priv\\\\stream\\\\java\\\\hello.txt");
System.out.println(file.getAbsoluteFile());
fr = new FileReader(file);
int data ;
while ((data = fr.read())!=-1)
System.out.print((char)data);
catch (IOException e)
e.printStackTrace();
finally
try
if(fr!=null)
fr.close();
catch (IOException e)
e.printStackTrace();
说明:读入的文件一定要存在,否则就会报FileNotFoundException
以上是关于java中IO流的主要内容,如果未能解决你的问题,请参考以下文章