File
File常用的三个构造方法:
public File(File parent,String child) ==>根据文件 以及子的路径来构建一个新的文件对象
public File(String pathname) ==> 根据路径来构建新的文件对象
public File(String parent,String child) 根据父的路径 和子的路径构建一个文件对象
4.常规的方法
创建文件
public boolean createNewFile()
创建文件夹
public boolean mkdir()
创建文件夹以及父目录
public boolean mkdirs()
删除文件
public boolean delete()
判断性:
public boolean exists() ==>判断文件是否存在
public boolean isFile() ==>判断是否是一个文件
public boolean isDirectory() ==>判断是否是一个文件夹
public boolean isHidden() ==>判断是否是隐藏文件
得到性:
public String getAbsolutePath() ==>返回文件或者文件的绝对路径
public String getName() ==> 返回的是文件或者文件夹名称
public String getParent() ==> 返回的是文件或者文件夹的父目录
public String getPath() ==> 返回就是文件的构造方式中的地址
重命名与剪切
public boolean renameTo(File dest)
重命名:在同一个目录下调用这个方法就是重命名
剪切: 不在同一个目录下调用这个方法就是剪切
public String[] list() ==>返回是当前目录下所有的文件
public File[] listFiles(FileFilter filter) ==>使用过滤器来返回有效的文件
FileFilter 文件过滤器 ==> 用于对文件进行过滤(把不必要的文件进行过滤)
public long length() ==>返回的是文件的长度(文件所占的字节数)
public class Shiyan2 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String path=input.next();
File f=new File(path);
boolean g=true;
while (g){
if(f.exists()){
if (f.isDirectory()){
File[] file=f.listFiles(new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.getName().endsWith("jpg")&&pathname.length()>20*1024){
return true;
}
return false;
}
});
g=false;
System.out.println(Arrays.toString(file));
}else {
System.out.println("重述");
path=input.next();
f=new File(path);
}
}else {
System.out.println("重述");
path=input.next();
f=new File(path);
}
}
}
}
IO
** 输入流 InputStream
输出流 OutputStream**
OutputStream 输出流
提供一些方法(子类是可以使用者些方法)
public void close()throws IOException 关闭流资源
public void flush()throws IOException 刷新缓冲区 也就是将缓冲区的数据 刷新到磁盘中
public void write(byte[] b)throws IOException 将字节数组写入到磁盘中
public void write(byte[] b,int off,int len) 指定字节数组的长度进行写入
public abstract void write(int b)throws IOException 表示写一个字节到磁盘中
FileOutputStream(OutputStream子类)
3.构造方法
public FileOutputStream(File file)throws FileNotFoundException
// 将数据通过FileOutputStream 写入到文件
public FileOutputStream(String name)throws FileNotFoundException
将数据通过FileOutputStream写入到指定的文件字符串路径中
public FileOutputStream(File file,boolean append)
将数据通过FileOutputStream 写入到文件
参数 append - 如果为 true,则将字节写入文件末尾处,而不是写入文件开始处
4.构造方法做了三件事
1.实例化对象 FileOutputStream
3.在执行路劲下创建一个空的文件
3.会将FileOutputStream对象执行这个文件
7.使用 public void write(byte[] b) 向文件写入多个字节
8.FileOutputStream 是可以在文件中写入字符串 只需要将字符串转换为字节数组
InputStream(输入流)
常用的方法(子类都可以使用)
public int available()throws IOException 输入流读取(或跳过)的估计字节数 输入流末尾,则返回 0
public void close()throws IOException 关闭流资源
public abstract int read()throws IOException 一个一个字节进行读取 末尾范湖-1
public int read(byte[] b)throws IOException 读取多个字节放入到数组中
返回值是读取有效的字节数
public int read(byte[] b,int off,int len)读取指定长度的字节放入到数组
6.FileInputStream(InputStream的)
1.用于读取文件中的数据
2.FileInputStream 用于读取诸如图像数据之类的原始字节流。
要读取字符流,请考虑使用 FileReader。
3.构造方法
常用的构造方法
public FileInputStream(File file)throws FileNotFoundException
使用FileInputStream 读取文件的内容
public FileInputStream(String name)throwsFileNotFoundException
使用FileInputStream 读取指定文件路径的内容
构造方法做两件事
1.实例化 FileInputStream对象
2.FileInputStream 执向需要读取的文件
案例
1.需求:将A文件中的内容复制到B文件中
2.分析:使用输入流 读取A文件中的内容
使用输出流 将A文件中读取的内容写入的B文件
文件的copy
高效流
1.两个高效流 BufferInputStream BufferOutputStream
这两个流读写的原理 就是是使用缓冲区来进行的读写(把字节读取到指定的数组一样),只是这两个流内部封装一个数组 这个数组的长度8192字节
BufferInputStream(InputStream i)
BufferOutputStream(outputStream i)
close() 与flush()区别
1.close() 底层调用了flush() 方法
2.close() 表示关闭流对象资源 关闭这个流对象资源之后 是不能使用
3.flush() ==>将缓冲区的数据刷新到磁盘中(字符) 流对象没有关闭 还是可以使用的
对象流
类似高效流
2.ObjectInputStream
构造方法
public ObjectInputStream(InputStream in) ==>需要传递一个文件流对象
常用的方法
public final Object readObject() 用于来读取对象
5.ObjectOutputStream
构造方法:
public ObjectOutputStream(OutputStream out)
常用写的方法
public final void writeObject(Object obj)
6.对一个对象进行读写操作
7.写一个集合
读数据
写: