文件的定义是什么?
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方法 }