相关记录或放在一起的数据的集合
Java API : java.io.File类
操作文件或目录的属性(路径、权限、日期和时间等)
// 获取一个File类对象, 这个对象指向计算机F盘中的demo.txt文件
File file1 = new File("F:\\demo.txt");
File类常用方法
| 方法名称 | 说明 |
|---|---|
| boolean exists( ) | 判断文件或目录是否存在 |
| boolean isFile( ) | 判断是否是文件 |
| boolean isDirectory( ) | 判断是否是目录 |
| String getPath( ) | 返回此对象表示的文件的相对路径名 |
| String getAbsolutePath( ) | 返回此对象表示的文件的绝对路径名 |
| String getName( ) | 返回此对象表示的文件或目录的名称 |
| boolean delete( ) | 删除此对象指定的文件或目录 |
| boolean createNewFile( ) | 创建名称的空文件,不创建文件夹 |
| long length() | 返回文件的长度,单位为字节, 如果文件不存在,则返回 0L |
通过流来读写文件
流是一组有序的数据序列
以先进先出的方式发送信息的通道
按流向区分:输入/输出流
输出流:OutputStream和Writer作为基类
输入流:InputStream和Reader作为基类
按照处理数据单元划分:字节/字符流
字节流:
字节输入流InputStream基类
字节输出流OutputStream基类
字符流:
字符输入流Reader基类
字符输出流Writer基类
FileInputStreamInputStream类常用方法
int read()
//创建File类对象
File file = new File("D://a.txt");
//创建FileInputStream类对象
FileInputStream fs = new FileInputStream(file);
//读取数据
int num =fis.read(); int read(byte[] b)
//创建FileInputStream类对象
FileInputStream fis = new FileInputStream("F:/a.txt");
//读取数据
byte[] bytes = new byte[1024];
//从流中读取数据,将读取的数据存储在你声明的数组中,该方法返回的结果表示从流中读取到的字节数目
int num = fis.read(bytes);
System.out.println(num); int read(byte[] b,int off,int len)
void close()
//关闭流 fis.close();
int available()
可以从输入流中读取的字节数目
子类FileInputStream常用的构造方法
FileInputStream(File file)
FileInputStream(String name)
使用FileInputStream读取文本文件步骤
1.引入相关类
import java.io.IOException;
import java.io.FileInputStream;2.构造文件输入流对象
FileInputStream fis= new FileInputStream("c:\\test.txt");3.读取文本文件的数据
fis.available();
fis.read();4.关闭文件流对象
fis.close();
FileOutputStreamOutputSream类常用方法
void write(int c)
void write(byte[] b)
void write(byte[] b,int off,int len)
void close()
void flush()
强制把缓冲区的数据写到输出流中
子类FileOutputStream常用的构造方法
FileOutputStream(File file)
FileOutputStream(String name)
通过这两个构造方法创建的输出流对象在对外进行数据输出的时候,会覆盖文件中原来的数据
FileOutputStream(File file,boolean append)
FileOutputStream(String name,boolean append)
使用这两个构造方法创建输出流对象的时候,将第二个参数赋值为
true,则在对外进行输出数据的时候,不会覆盖文件中原来的数据
注意:
创建
FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件
使用FileOnputStream写文本文件步骤
1.引入相关类
import java.io.IOException;
import java.io.FileOutputStream;2.构造文件输出流
FileOutputStream对象
FileOutputStream fos = new FileOutputStream("text.txt");3.把数据写入文本文件
String str ="好好学习Java";
byte[] words = str.getBytes();
fos.write(words, 0, words.length);4.关闭文件流对象
fos.close();
Reader类Reader类常用方法
int read()
int read(char[] c)
read(char[] c,int off,int len)
void close()
子类InputStreamReader常用的构造方法
InputStream(InputStream in)
InputStream(InputStream in,String charsetName)
FileReader类FileReader类是InputStreamReader的子类
FileReader(File file)
FileReader(String name)
该类只能按照本地平台的字符编码来读取数据,用户不能指定其他的字符编码类型
System.out.println(System.getProperty("file.encoding")); 获得本地平台的字符编码类型
使用FileReader读取文件步骤
1.引入相关类
import java.io.Reader;
import java.io.FileReader;
Import java.io.IOExceprion;2.创建
FileReader对象
Reader fr= new FileReader("D:\\myDoc\\简介.txt");3.读取文本文件的数据
fr.read();4.关闭相关流对象
fr.close();
BufferedReader类如何提高字符流读取文本文件的效率?
使用FileReader类与BufferedReader类
BufferedReader类是Reader类的子类
BufferedReader类带有缓冲区按行读取内容的
readLine()方法
BufferedReader类常用的构造方法
BufferedReader(Reader in)
子类BufferedReader特有的方法
readLine()
使用BufferedReader读文本文件步骤
1.引用相关类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;2.构造
BufferedReader对象和FileReader对象
Reader fr = new FileReader("C:\\myTest.txt ");
BufferedReader br = new BufferedReader(fr);3.调用
readLine()方法读取数据
br.readLine();4.关闭文件流对象
br.close();
fr.close();
如何解决读取时中文乱码?
//使用InputStreamReader并设置编码格式
InputStreamReader fr=new InputStreamReader(fis,"UTF-8");
Writer类Writer类常用方法
write(String str)
write(String str,int off,int len)
void close()
void flush()
子类OutputStreamWriter常用的构造方法
OutputStreamWriter(OutputStream out)
OutputStreamWriter(OutputStream out,String charsetName)
FileWriter类
FileWriter类是OutputStreamWriter的子类
FileWriter(File file)
FileWriter(String name)
该类只能按照本地平台的字符编码来写数据,用户不能指定其他的字符编码类型
使用FileWriter写文件步骤
1.引用相关类
import java.io.Reader;
import java.io.FileWriter;
Import java.io.IOException;2.创建
FileReader对象
Writer fw= new FileWriter("D:\\myDoc\\简介.txt");3.调用readLine()方法读取数据
fw.write();4.关闭文件流对象
fw.close();
BufferedWriter类如何提高字符流写文本文件的效率?
使用FileWriter类与BufferedWriter类
BufferedWriter类是Writer类的子类
BufferedWriter类带有缓冲区
BufferedWriter常用的构造方法
BufferedWriter(Writer out)
使用BufferedWriter读文本文件步骤
1.引用相关类
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;2.构造
BufferedWriter对象和FileWriter对象
FileWriter fr = new FileWriter("C:\\myTest.txt ");
BufferedWriter br = new BufferedWriteer(fr);3.调用
write()方法读取数据
br.write("hello");4.关闭文件流对象
br.flush();
fr.close();
DataInputStream类
FileInputStream的子类
与FileInputStream类结合使用读取二进制文件
DataOutputStream类
FileOutputStream的子类
与FileOutputStream类结合使用写二进制文件
使用DataInputStream读二进制文件
1.引入相关的类
import java.io.FileInputStream;
import java.io.DataInputStream;2.构造数据输入流对象
FileInputStream fis=new FileInputStream("C:\\HelloWorld.class");
DataInputStream dis=new DataInputStream(fis);3.调用
read()方法读取二进制数据
dis.read ();4.关闭数据输入流
dis.close();
使用DataOutputStream写二进制文件
1.引入相关的类
import java.io.FileOutputStream;
import java.io.DataOutputStream;2.构造数据输出流对象
FileOutputStream outFile=new FileOutputStream("C:\\temp.class");
DataOutputStream out=new DataOutputStream(outFile);3.调用
write()方法读取二进制数据
out.write ();4.关闭数据输入流
out.close();
序列化:是将对象的状态写入到特定的流中的过程
反序列化:则是从特定的流中获取数据重新构建对象的过程
序列化步骤:
1.实现
SeriaLizable接口2.创建对象输出流
3.调用
writeObject()方法将对象写入文件4.关闭对象输出流
注意:
使用集合保存对象,可以将集合中的所有对象序列化
反序列化步骤:
1.实现
SeriaLizable接口2.创建对象输入流
3.调用
readObject()方法将对象写入文件4.关闭对象输出流
注意:
如果向文件中使用序列化机制写入多个对象,那么反序列化恢复对象时,必须按照写入的顺序读取