I/O相关 输入/输出 流(数据流动)

数据流动的方向  读数据(输入input)  写数据(输出 output)

文件流  字符流  数据流 对象流  网络流

1.什么叫文件?

一种电脑的存储形式

文件有不同的格式 .txt  .doc  .ppt  .mp4  .jpg  .rar

文件夹?--目录路径

File-->与电脑上的文件或文件夹产生一 一对应的映射关系

1.File是一个类 java.io包中  可以表示 文件或目录路径名;

2.File与真实硬盘中的文件或文件夹 不是一个东西

File是在内存中的一个对象  ---映射 --硬盘上

java fileutils 递归创建目录工具类_System

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 //类似递归思想
}
}

java fileutils 递归创建目录工具类_java_02

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
//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.什么叫文件流?

读取文件中的内容    向文件中写内容
文件输入流       文件输出流
字节型文件输入流    字节型文件输出流
字符型文件输入流    字符型文件输出流