文件
相关记录或放在一起的数据的集合
Java程序如何访问文件属性?
Java API : java.io.File类
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 |
流
如何读写文件?
通过流来读写文件
流是一组有序的数据序列
以先进先出的方式发送信息的通道
Java中流的分类
按流向区分:输入/输出流
输出流:OutputStream和Writer作为基类
输入流:InputStream和Reader作为基类
按照处理数据单元划分:字节/字符流
字节流:
字节输入流InputStream基类
字节输出流OutputStream基类
字符流:
字符输入流Reader基类
字符输出流Writer基类
FileInputStream
InputStream类常用方法
-
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();
FileOutputStream
OutputSream类常用方法
-
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.关闭对象输出流
注意:
如果向文件中使用序列化机制写入多个对象,那么反序列化恢复对象时,必须按照写入的顺序读取
512

被折叠的 条评论
为什么被折叠?



