一、Java IO流复习


流的概念和作用

流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。

IO流的分类

根据处理数据类型的不同分为:字符流和字节流

根据数据流向不同分为:输入流和输出流

字符流和字节流

字节流和字符流的区别:

(1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。

(2)处理对象不同:字节流能处理所有类型的数据,而字符流只能处理字符类型的数据。

(3)字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的;而字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件。

输入流和输出流

输入流只能读,输出流只能写,要根据情况使用不同的流。

File类

File类是对文件系统中文件以及文件夹进行封装的对象,可以通过对象的思想来操作文件和文件夹。 File类保存文件或目录的各种元数据信息,包括文件名、文件长度、最后修改时间、是否可读、获取当前文件的路径名,判断指定文件是否存在、获得当前目录中的文件列表,创建、删除文件和目录等方法。

1. 输入字节流InputStream

InputStream 是所有的输入字节流的父类,它是一个抽象类。如下:

//读
try {
FileInputStream fis=new FileInputStream(file);
byte b[]=new byte[1024];
int len=0;
while((len=fis.read(b))!=-1){
//将字节数组转成字符串
String s=new String(b, 0, len);
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace();
}


2. 输出字节流OutputStream

OutputStream 是所有的输出字节流的父类,它是一个抽象类。如下:

File file=new File("test2.txt");
//判断 该文件是否存在
if(!file.exists()){
//不存在:创建文件 写内容
System.out.println("该文件不存在,正在创建...");
//创建文件
try {
boolean b=file.createNewFile();
if(b){
System.out.println("创建成功了...");
//写内容(字节流 )
FileOutputStream fos=new FileOutputStream(file);
fos.write("我和楼上的老王的第1次".getBytes());
fos.close();

3.转化流

转换流是字符流和字节流之间的桥梁。如下(使用转化流实现文件复制):

public class TestCopyChange {
public static void main(String[] args) {
File file=new File("test.txt");
File fileOut=new File("C:\\Users\\Administrator\\Desktop\\a");
try {
//获取字节文件输入流
FileInputStream fis=new FileInputStream(file);
//使用字符缓冲输入流
BufferedReader br=new BufferedReader(new InputStreamReader(fis));
String s=br.readLine();
System.out.println(s);

//打印流
PrintWriter pw=new PrintWriter(file);
pw.write("新内容");
pw.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}

以上就是博主对IO流的一些理解,请大家多多指教。

你可能感兴趣的:(io流,java)