文件的定义是什么?
File类是文件和目录的抽象表示形式
什么是文件?
文件可认为是相关记录或放在一起的数据的集合。
File类常用的方法有哪些?
exists()、isFile()、isDirectory()、length()、getName()
写二进制文件可以使用哪两个类?
DataOutputStream DataInputStream
File类的定义? File类表示磁盘上的文件或目录。在Java中不管是文件还是目录统一都用File类来表示。
File f1 = new File("E:\\test");
if(f1.exists()){
System.out.println("该文件夹已经存在");
}else{
f1.mkdir();// 创建文件夹
}
File f2 = new File("E:\\test\\a.txt");
f2.createNewFile(); //指定文件夹下创建文件
mport java.io.File;
……
File file = new File(args[0]);
System.out.println("文件或目录是否存在:" + file.exists());
System.out.println("是文件吗:" + file.isFile());
System.out.println("是目录吗:" + file.isDirectory());
System.out.println("名称:" + file .getName());
System.out.println("路径: " + file.getPath());
System.out.println("绝对路径: " + file.getAbsolutePath());
System.out.println("最后修改时间:" + file.lastModified());
System.out.println(“文件大小:” + file.length()+ “ 字节”);
流是指一连串流动的字符,是以先进先出方式发送信息的通道。
字节流 8 位 两个重要的抽象类: InputStream OutputStream 它们是表示字节输入、输出流的所有类的父类。
字符流 16 位 Unicode 两个重要的抽象类: Reader Writer 它们是表示字符输入、输出流的所有类的父类。
FileOutputStream 是用于写入字节数据流到文件中的类,继承自OutputStream类,提供了最基础的文件写数据操作。 向“e:\\test\\a.txt”文件里写入“我是一个好学生”.
FileWriter是用于写入字符数据流到文件中的类,间接继承自Writer类,方便创建字符流对象。
import java.io.*;
……
OutputStream fos = new FileOutputStream(" e:\\test\\a.txt ");
String str ="我是一个好学生";
byte[] words = str.getBytes();
fos.write(words, 0, words.length);
fos.close();
mport java.io.*;
……
FileWriter fw = new FileWriter(" e:\\test\\a.txt ");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("我要认真学习");
bw.flush();
fw.close();
小结:
写文本文件操作的一般步骤?
构造一个文件输出流对象
利用文件输出流的方法写文本文件
关闭文件输出流
读文本文件操作的一般步骤?
构造一个文件输出流对象根据文件路径创建输入流
读取数据
关闭文件输入流
如何使用DataInputStream与DataOutputStream读写二进制文件。
1、创建一个Member类。
2、将Member类实例的成员数据写入E:\\a.txt文件中。
3、在读入文件数据后,将这些数据还原为Member对象。
DataInputStream dataInputStream =new DataInputStream(new FileInputStream(fileName));
for(int i = 0; i < members.length; i++) {
// 读出UTF字符串
String name = dataInputStream.readUTF();
// 读出int数据
int score = dataInputStream.readInt();
members[i] = new Member(name, score);
}
dataInputStream.close(); // 关闭流
// 显示还原后的数据
for(int i=0;i< members.length;i++){
Member member = (Member) members[i];
System.out.println(member.getName()+" " +member.getAge());
}
Member[] members = {new Member("张三", 90)
, new Member("李四", 95), new Member("王五", 88)};
String fileName = "E:\\a.txt";
DataOutputStream dataOutputStream =
new DataOutputStream(new FileOutputStream(fileName));
for(Member member : members) {
// 写入UTF字符串
dataOutputStream.writeUTF(member.getName());
// 写入int数据
dataOutputStream.writeInt(member.getAge());
}
// 写入所有数据至目标文件
dataOutputStream.flush();
// 关闭流
dataOutputStream.close();
public class Member {
private String name;
private int age;
public Member() {
}
public Member(String name, int age) {
this.name = name;
this.age = age;
}
……生成getter和setter方法
}