口诀:输入流读数据,输出流写数据
1.使用I/O操作文件
1).操作文件或目录属性
>使用File类操作文件或目录属性
>使用FileInputStream类读文本文件
>使用FileOutputStream类写文本文件
>使用BufferedReader类和FileReader类读文本文件
>使用BufferedWriter类和FileWriter类写文本文件
>使用DataInputStream类读二进制文件
>使用DataOutputStream类写二进制文件
>重定向标准I/O
使用File类操作文件和目录属性的步骤如下 :
(1).引入File类
import.java.io.File;
(2)构造一个文件对象
File file =new File("text.txt");
(3)利用File类的方法访问文件或目录的属性
file.exists(); //判断文件或目录是否存在
file.isFile(); //判断是否是文件
file.isDirectory(); //判断是否是目录
file.getName(); //获取文件或目录的名称
file.getPath(); //获取文件或目录的路径
file.getAbsolutePath(); //获取文件或目录的绝对路径
file.lastModified(); //获取文件或目录的最后修改日期
file.length(); //获取文件或目录的大小,单位字节
file.mkdir(); //创建一个目录
file.delete(); //删除指定文件
2.)认识Java流
流是指一连串流动的字符,是以先进先出的方式发送和接受数据的通道。
流分输入流和输出流,输入/输出流是相对计算机内存来说的,如果数据输入输入到内存,则称为输入流,如果从内存输出则称为输出流。Java的输出流主要由OutputStream和Write作为基类,而输入流则主要由InputStream和Reader作为基类。
在java.io包中,封装了许多输入/输出流的API。在程序中,这些输入/输出流类的对象称为流对象。可以通过这些流对象将内存中的数据以流的方式写入文件,也可以通过流对象将文件中的数据以流的方式读取到内存。
构造流对象时往往会和数据源(如文件)联系起来。数据源分为源数据源和目标数据源。
输入/输出流有分为字节流和字符流两种形式
字节流是8位通用字节流,其基本单位是字节,字节流的基类是InputStream类和OutputStream类,他们是抽象类。
字符流是16位Unicode字符流,基本单位是Unicode字符,字符流最适合处理字符串和文本,因为他们支持国际上大多数字符集和语言,字符流的基类是Reader类和Writer类,他们也是抽象类。
一个被访问的流的基本特征都是通过实现4个抽象类的方法建立的
InputStream类常用的子类有FileInputStream,用于从文件中读取数据
OutputStream类常用的子类FileOutputStream,用于向文件写数据
Reader类的常用子类为BufferedReader,接受Reader对象作为参数,并对其添加字符缓冲器
Writer类的常用子类为BufferedWriter,用于将数据缓冲到字符输出流
3)读写文本文件
通常可以使用java.io包里的流读写文本文件
(1).使用字节流读写文本文件
InputStream类常用的子类有FileInputStream,用于从文件中读取数据
使用字节流类FileInputStream读文本文件
步骤如下:导入相关的类
import.java.io.IOException;
import.java.io.InputStream;
import.java.io.FileInputStream;
构造一个文件输入流对象
InputStream fileObject =new FileInputStream("text.txt");
此时的文件输入流对象fileObject就和源数据(text.txt文件)关联起来了。
利用文件输入流类的方法读取文本文件的数据
fileObject.available(); //可读取字节数
fileObject.read(); //读取文件数据
关闭文件输入流对象
fileObject.close();
使用字节流类FileOutputStream写文本文件
OutputStream类常用的子类FileOutputStream,用于向文件写数据
步骤:
导入相关类
import.java.io.IOException;
import.java.io.OutputStream;
import.java.io.FileOutputStream;
构造一个文件输出流对象
OutputStream fos =new FileOutputStream("text.txt");
此时的文件输出流对象fost就和目标源数据(text.txt文件)关联起来了。
利用文件输出流的方法把数据写到文本文件中
String str="好好学习Java";
byte[]words =str.getBytes();
//利用write方法把数据写入到文本文件中
fos.write(words,0,words.length);
关闭文件输出流
fos.close();
(2)使用字符流读写文本文件
使用字符流类BufferedReader和FileReader读文本文件
Reader类的常用子类为BufferedReader,FileReader,通过字符流的方式读写文本文件,并对其添加字符缓冲器。
步骤
引入相关的类
import.java.io.IOException;
import.java.io.BufferedReader;
import.java.io.FileReader;
构造一个BufferedReader对象
FileReader fr=new FileReader("mytest.txt");
BufferedReader br=new BufferedReader(fr);
利用BufferedReader类的方法读取文本文件的数据
br.readLine(); //读取一行数据,返回字符串
关闭相关流对象
br.close();
fr.close();
使用字符流类BufferedWriter和FileWriter写文本文件
Writer类的常用子类为BufferedWriter,FileWriter,通过字符流的方式通过缓冲区把数据写入文本文件。
步骤
引入相关类
import.java.io.IOException;
import.java.io.BufferedWriter;
import.java.io.FileWriter;
构造一个BufferedWriter对象
FileWriter fw= new FileWriter("mytest.txt");
BufferedWriter bw=new BufferedWriter(fw);
利用BufferedWriter类的方法写文本文件
bw.write("hello");
相关流的对象清空和关闭
by.flush();
by.close();
fw.close();