File类
该类是文件类,构造方法可以构造文件对象,用来对文件进行各种操作
构造方法
//新建一个文件对象,,通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例
File file = new File("D:\\book\\经典文件夹");
/**从父抽象路径名和子路径名字符串创建新的 File实例*/
File file1 = new File(file,"传记")
File类的功能方法
//判断文件是否存在,返回值是boolean类型
boolean b = file.exists();
//删除文件
file.delete();
//创建文件
file.createNewFile();
//创建文件夹
file.mkdir();
//获取文件名
file.getName();
//获取文件的父目录
file.getParent();
//判断文件是不是目录,是不是文件
file.isDectory();
file.isFile();
//获取文件长度
file.length();
IO流
IO流是程序和文件之间进行数据传输的技术,有字节输入输出流和字符输入输出流
向文件写入,out,writer,,从文件中读取,in,reader
字节输入流 InputStream
该流主要是从文件中读取内容到程序中
//字节输入流,读取文件内容
//构建一个输入流对象
InputStream inputStream = new FileInputStream("D:\\book\\帮助说明.txt");
//读取文件的内容,一个字节一个字节的读,如果返回值是-1就说明读到了文件末尾
int i = inputStream.read();
while (i != -1) {
System.out.print((char) i);
i = inputStream.read();
}
byte[] bytes = new byte[1024];
//读取内容到字节s
int i = in.read(bytes);
while (i != -1) {
for (int j = 0; j < i; j++) {
System.out.print((char) bytes[j]);
}
i=in.read(bytes);
}
//关闭流
inputStream.close();
字节输出流OutputStream
//用FileOutputStream抽象类来实现流的构建,文件不存在会自动创建这个文件
OutputStream out = new FileOutputStream("D:/test.txt", true);
//向文件写入一个字符
out.write('1');
//向文件里写入数据一次写入多个字符
//写入的时候会把byte数组里面的数字转换成对应的字符写入到文件里面
byte[] bytes = {90,97,101,105};
String str = "216645198";
byte[] bytes1 = str.getBytes();
//out.write(bytes);
out.write(bytes1);
out.close();
字符输入流Reader
//创建字节输入流对象 从文件中以一个一个字符的形式冲文件中读取数据
Reader reader = new FileReader(""D:/test.txt");
//从文件里读取一个字符
reader.read();
//读取一个字符串的内容
char[] chars = new char[10];
reader.read(chars);
//返回值num,只有读到最后一个时num值为-1
int num = fileReader1.read(chars);
while (num!=-1){
for (int i = 0; i < num; i++) {
System.out.print(chars[i]);
}
//更新num的值
num = fileReader1.read(chars);
}
//关闭流
reader.close();
字符输出流Writer
//构造一个write对象,向文本里写入字符内容
Writer writer = new FileWriter("D:/test2.txt",true);
//向文件里写入内容,v以是字符串,可以是一个字符,也可以是字符数组
//写入字符串内容
writer.write("你好我好大家好,nini");
//写入字节内容
writer.write('A');
//写入,字符数组
char [] chars = {'a','b','c'};
writer.write(chars);
writer.close();
序列化流
该流是向文件里读取或者写入对象的,把对象序列化,用对象输入输出流读取和输出
//怎么把对象序列化
//对象的类名继承 Serializable 接口
public class Book implements Serializable {
private String name;
private int id;
......;
......;
......;
}
//一个字节序列可以表示一个对象,该字节序列包含对象的信息,可以把该字节序列写出到文件,相当于文件中持久保存了一个对象信息
//创建输出流对象
FileOutputStream out = new FileOutputStream("D:/book/book.txt",true);
//创建book对象
Book book = new Book("水浒传",1);
//使用对象输出流进行对象的整体输出(序列化输出流)
ObjectOutputStream objectOutputStream = new ObjectOutputStream(out);
objectOutputStream.writeObject(book);
objectOutputStream.close();
//创建字节输入流对象
FileInputStream inputStream = new FileInputStream("D:/book/book.txt");
//转换成对象输入流(反序列化输入流)
ObjectInputStream stream = new ObjectInputStream(inputStream);
//读取内容
Object object = stream.readObject();
Book book = (Book) object;
System.out.println(book.getName()+book.getId());
stream.close();
}