I/O相关 输入/输出 流(数据流动)
数据流动的方向 读数据(输入input) 写数据(输出 output)
文件流 字符流 数据流 对象流 网络流
1.什么叫文件?
一种电脑的存储形式
文件有不同的格式 .txt .doc .ppt .mp4 .jpg .rar
文件夹?--目录路径
File-->与电脑上的文件或文件夹产生一 一对应的映射关系
1.File是一个类 java.io包中 可以表示 文件或目录路径名;
2.File与真实硬盘中的文件或文件夹 不是一个东西
File是在内存中的一个对象 ---映射 --硬盘上
3.File类中的常用的方法:
canRead() canWrite() isHidden() isDirectory() //基本属性
length() lastModified()
getAbsolutePath();//绝对路径 getName();
getName();
* createNewFile() //创建新的文件
* mkdir() //创建新的文件夹 外层没有 不能创建 //一层
* mkdirs(); //创建新的文件夹 外层没有 可以自动创建 //多层
String a=getParent() //获取当前file的父亲file名字
* File a=getParentFile() //获取当前file的父亲file对象
* String[] a=list() //获取当前file的所有儿子名字
* File[] a=listFiles() //获取当前file的所有儿子对象
* boolean a=delete() //删除文件或空的文件夹 不能删除带元素的文件夹
绝对路径<--->相对路径
绝对路径可以通过完整的字符串 定位盘符 文件夹 文件
相对路径没有盘符的写法 当前(java)项目所在的位置找寻(作为根目录)
1.文件夹的遍历--需要一个递归(有限次数的调自己的方法);
2.文件夹的删除;--递归
3.文件夹的路径(找父目录);
4.文件的复制; --文件流来完成 读取文件内容 将内容写入文件;
5.文件的加密;--文件流
6.文件夹的复制;
import java.io.File; import java.util.*; import java.text.*; public class TestMain{ public static void main(String[] args){ //File f=new File("D://java//object//Test0528.txt"); File f=new File("D:\java\object\Test0528.txt"); System.out.println(f.canExecute()); System.out.println(f.canRead()); System.out.println(f.canWrite()); System.out.println(f.isHidden()); System.out.println(f.isFile());//文件 System.out.println(f.isDirectory());//目录 System.out.println(f.length()); System.out.println(f.lastModified()); Date date=new Date(f.lastModified()); SimpleDateFormat sdate=new SimpleDateFormat("yyyy-MM-dd KK:mm:ss"); System.out.println(sdate.format(date)); System.out.println(f.getAbsolutePath()); System.out.println(f.getName()); } }
import java.io.*; public class TestMain{ public static void main(String[] args){ File k=new File("D:\java\object\bbb\ccc"); System.out.println(k.mkdir());//无编译时异常//若bbb不存在,则创建不了 System.out.println(k.mkdirs());////若bbb不存在,可以创建成功; //File f=new File("D:\java\object\abc.txt"); File f=new File("D:\java\object\abc"); try{ boolean v=f.createNewFile();//编译时异常 System.out.println(v); }catch(IOException e){ e.printStackTrace(); }//创建文件; } }
import java.io.*; public class TestMain{ public static void main(String[] args){ File f=new File("D:\java\object\Test0528.txt"); String pn=f.getParent(); System.out.println(pn); File pf=f.getParentFile(); System.out.println(pf.getAbsolutePath()); while(pf!=null){//遍历当前文件的父目录 System.out.println(pf.getAbsolutePath()); pf=pf.getParentFile();//再找一遍; } } }
import java.io.*; public class TestMain{ public static void main(String[] args){ File f=new File("D:\java\object\bbb\ccc");// File[] fs=f.listFiles();//数组对象为空 证明当前的f是文件; //数组对象不为为空 证明当前的f是一个文件夹 System.out.println(fs); System.out.println(fs.length);//数组对象的长度不为0 证明当前的f是一个不为空的文件夹 //递归算法--遍历文件夹; boolean v=f.delete();//删掉文件或空文件夹 //回收站无法找回 System.out.println(v); } }
递归相关;
public class TestMain{ public void testOne(){ this.testTwo(); System.out.println("1"); } public void testTwo(){ this.testThree(); System.out.println("2"); } public void testThree(){ System.out.println("3"); } public static void main(String[] args){ TestMain a=new TestMain(); a.testOne();//3 2 2 //类似递归思想 } }
import java.io.*; public class TestMain{ public void build(File a){// System.out.println(a.getAbsolutePath());//显示文件或文件夹查找的顺序; File[] f=a.listFiles(); if(f!=null && f.length>0){ //for(int i=0;i<f.length;i++){ //this.build(f[i]); //} for(File v:f){ this.build(v); } } //System.out.println(a.getAbsolutePath());//显示文件或文件夹删除的顺序; a.delete(); } public static void main(String[] args){ TestMain x=new TestMain(); File f=new File("D:\sc");//D:\bbb 或D:\test.txt x.build(f); } }
2.什么叫文件流?
读取文件中的内容 向文件中写内容
文件输入流 文件输出流
字节型文件输入流 字节型文件输出流
字符型文件输入流 字符型文件输出流