Java学习 day22
文件类
File file = new File(“C:\Users\hehanyu\Desktop\新建文本文档.txt”); //创建文件对象 file.createNewFile();//创建新文件 System.out.println(“获取文件名:” + file.getName()); System.out.println(“获取文件绝对路径:” + file.getAbsolutePath()); System.out.println(“获取文件相对路径:” + file.getPath()); System.out.println(“获取文件长度:” + file.length()); System.out.println(“获取是否可读:” + file.canRead()); System.out.println(“获取是否可写:” + file.canWrite()); System.out.println(“获取是否隐藏:” + file.isHidden()); System.out.println(“获取最后修改时间:” + file.lastModified()); System.out.println(“判断文件是否存在:” + file.exists()); System.out.println(“判断该对象是否是文件:” + file.isFile());
File file = new File("aaa\\asd.txt");
System.out.println(file.getAbsolutePath());
File parentFile = file.getParentFile();
if(!parentFile.exists()){
parentFile.mkdir();
}
if(!file.exists()){
file.createNewFile();
}
File file = new File("C:\\小幸福");
String[] list = file.list();
File[] listFiles = file.listFiles();
通过递归算法遍历输出目标文件下的.txt文件夹
public static void main(String[] args){
File file = new File("E:\\WorkSpace\\Day22");
mothod(file, ".txt")
}
public static void method(File file, String str){
File[] fileLists = file.listFiles();
for(File f: fileLists){
if(f.isDirectory()){
mothed(f, str);
}else if(f.isFile() && f.getName().endsWith(str)){
System.out.println(f.getName());
}
}
}
IO流
I – 输入流 – read() O – 输出流 – write()
字节流
应用场景:处理二进制文件(图片、音频、视频、压缩包)
class abstract InputStream – 字节输入流的基类 class abstract OutputStream - 字节输出流的基类
FileInputStream extends InputStream – 文件字节输入流 FileOutputStream extends OutputStream – 文件字节输出流
FilterInputStream extends InputStream – 过滤器字节输入流 FilterOutputStream extends OutputStream - 过滤器字节输出流
BufferedInputStream extends FilterInputStream – 带有缓冲区的字节输入流 BufferedOutputStream extends FilterOutputStream - 带有缓冲区的字节输出流 默认缓冲区大小:8192字节
字符流
应用场景:文本
class abstract Reader – 字符输入流的基类 class abstract Writer – 字符输出流的基类
InputStreamReader extends Reader – 字符输入转换流 OutputStreamWriter extends Writer – 字符输出转换流
应用场景:将字节流转换为字符流 FileReader extends InputStreamReader – 文件字符输入流 FileWriter extends OutputStreamWriter – 文件字符输出流
BufferedReader extends Reader – 带缓冲区的字符输入流 BufferedWriter extends Writer – 带缓存区的字符输出流 默认缓冲区大小:8192字符
对象流
含义:可以将对象作为数据写入到文件,将文件中的对象获取到程序中
ObjectInputStream – 对象输入流 ObjectOutputStream - 对象输出流
注意: 对象要想写入文件,对象(Object)所属的类必须实现序列化接口Serializable 在实体类比如User类中,实现接口Serializable后加入一个序列化ID,用于记录当前实体类的序列号,当以后这个实体类结构发生改变后,Input不会报错。
public class User implements Serializable{
private static final long serialVersionUID = 8225862684915400024L;
}
Serializable中没有任何抽象方法,这种接口叫做标记型接口 序列化/钝化:将程序中对象写入到文件中 反序列化/活化:将文件中的对象读取到程序中 transient修饰的属性不会随着对象的写入而写入文件
ObjectOutputStream obo = new ObjectOutputStream(new FileOutputStream("hhh.txt"));
ObjectInputStream obi = new ObjectInputStream(new FileInputStream("hhh.txt"));
obo.writeInt(100);
obo.writeUTF(".txt");
obo.writeObject(new Object());
int i = obi.readInt();
String str = obi.readUTF();
Object obj = obi.readObject();
obo.writeObject(new User());
obo.writeObject(new User());
obo.writeObject(new User());
obo.writeObject(null);
User user;
while((user = (User)obi.readObject()) != null){
System.out.println(user);
}
obo.close();
obi.close();
}
|