【File分隔符】--File静态变量
import java.io.File;
/*
* java.io.File
* 将操作系统中的,文件(file),目录(directory)(文件夹),路径(path),封装成File对象
* 提供方法,操作系统中的内容 File是与系统无关的类
*/
public class FileDemo1 {
public static void main(String[] args) {
//File静态成员变量
// 与系统有关的路径分隔符
String separator = File.pathSeparator;
System.out.println(separator); //目录的分隔符 windows 下是一个; Linux 下是:
// 与系统有关的默认名称分隔符
separator = File.separator;
System.out.println(separator); //目录名称分隔符 向右 \ Linux 下是/
}
}
【File构造方法】
import java.io.File;
/*
* File类的构造方法
*/
/*
* 路径
* 绝对路径:在系统中具有唯一性
* c:\\windows\\system32
* http://www.XXX.cn
* 相对路径:表示的是路径之间的相对关系
* E:\\workspace\\day20\\bin\\dfs
* E:\\workspace\\day20\\src
* 路径之间的关系:
* day20的父目录是E:\\workspace
* day20的子目录是src、bin
* 父目录是唯一的
* 子目录可以有多个
*/
public class FileDemo2 {
public static void main(String[] args) {
function_3();
}
/*
*1. File(String pathname) 将路径封装成File类型的对象
* 传递路径名:可以写到一个文件夹,也可以写到一个文件
* c:\\abc c:\\abc\\Demo.java
*/
public static void function_1(){
File file = new File("E:\\workspace");
System.out.println(file); // E:\workspace
}
/*
* 2. File(String parent, String child) 字符串父路径,字符串子路径
*/
public static void function_2(){
File file = new File("c:","windows"); // c:\windows
System.out.println(file);
}
/*
* 3. File(File parent, String child) File类型父路径,String类型子路径
*/
public static void function_3(){
File parent = new File("d:");
File file = new File(parent, "eclipse");
System.out.println(file); // d:\eclipse
}
}
【创建或删除文件、文件夹】
import java.io.File;
import java.io.IOException;
/*
* File类的创建和删除
*/
public class FileDemo3 {
public static void main(String[] args) throws IOException{
function_3();
}
/*1. File创建文件的功能 boolean createNewFile()
* 创建的文件路径和文件名,在File构造方法中给出
* 若文件已经存在就不在创建,返回false
*/
public static void function_1() throws IOException{
File file = new File("E:\\workspace\\a.txt");
boolean b = file.createNewFile();
System.out.println(b);
}
/* 2. 创建文件夹功能 boolean mkdirs() 创建多层文件夹
* 创建的路径也在File构造方法中给出
* 若文件已经存在就不在创建,返回false
*/
public static void function_2(){
File file = new File("E:\\workspace\\day22_1\\acf");
boolean b = file.mkdirs();
System.out.println(b);
}
/*3. 删除功能 boolean delete() 删除文件或者文件夹
* 路径也在File构造方法中给出
* 删除成功返回true,删除失败返回false
* 注意:删除方法,不走回收站,直接从硬盘中删除 删除有风险,运行需谨慎
*/
public static void function_3(){
File file = new File("E:\\workspace\\day22_1");
boolean b = file.delete();
System.out.println(b);
}
}
【获取功能】
import java.io.File;
/*
* File类的获取功能
*/
public class FileDemo4 {
public static void main(String[] args) {
function_4();
}
/*1.File类的获取功能 String getName()
* 返回路径中表示的文件或者文件夹名
* 获取路径中的最后部分的名字
*/
public static void function_1(){
File file =new File("E:\\workspace\\day22\\src\\usst\\javacode\\Demo1\\FileDemo1.java");
String name = file.getName();
System.out.println(name); // FileDemo1.java
String path = file.getPath();
System.out.println(path); //
}
/*2.File类的获取功能 long length()
* 返回路径中表示的文件的字节数
*/
public static void function_2(){
File file =new File("E:\\workspace\\day22\\src\\usst\\javacode\\Demo1\\FileDemo1.java");
long length = file.length();
System.out.println(length); //669
}
/*3. String getAbsolutePath() 返回String对象
* File getAbsoluteFile() 返回File对象
* 获取绝对路径
* eclipse环境中,写的是相对路径,返回的是绝对位置工程根目录
*/
public static void function_3(){
File file = new File("src");
File absolute = file.getAbsoluteFile();
System.out.println(absolute); // E:\workspace\day22\src
}
/*4. String getParent() 返回String对象
* File getParentFile() 返回File对象
* 获取父路径
*/
public static void function_4(){
File file =new File("E:\\workspace\\FileDemo1.java");
File parent = file.getParentFile();
System.out.println(parent); // E:\workspace
}
}
【File判断功能】
import java.io.File;
/*
* File判断功能
*/
public class FileDemo5 {
public static void main(String[] args) {
function_2();
}
/*1. boolean exists() 判断File构造方法中封装的路径是否存在
* 存在返回true 不存在返回false
*/
public static void function_1(){
File file = new File("src");
boolean b = file.exists();
System.out.println(b);
}
/*2. boolean isDirectory() 判断File构造方法中封装的路径是不是文件夹
* 若是文件夹返回true,不是文件夹返回false
* boolean isFile() 判断File构造方法中封装的路径是不是文件
*/
public static void function_2(){
File file = new File("E:\\eclipse");
boolean b = file.isDirectory();
System.out.println(b);
}
}
【File类的获取功能】
import java.io.File;
/*
* File类的获取功能
*/
public class FileDemo6 {
public static void main(String[] args) {
function_3();
}
// 1. String[] list() 获取到,File构造方法中封装的路径中的文件和文件夹名(遍历一个目录)
public static void function_1(){
File file = new File("E:\\eclipse");
String[] strarr = file.list();
for(String s:strarr){
System.out.println(s); // artifacts.xml ......
}
}
// 2. File[] listFiles() 返回的是目录或文件的全路径
public static void function_2(){
File file = new File("E:\\eclipse");
File[] strarr = file.listFiles();
for(File s:strarr){
String s1 = s.toString(); // 转换成字符串形式
System.out.println(s1); // E:\eclipse\.eclipseproduct ......
}
}
// 3. File[] listRoots() 获取系统中所有跟目录
public static void function_3(){
File[] file = File.listRoots();
for(File f:file){
System.out.println(f); // C:\ D:\ E:\ G:\
}
}
}
【文件过滤器】
import java.io.File;
import java.io.FileFilter;
/*
* 自定义过滤器
* 实现FileFilter接口,重写抽象方法 boolean accept(File pathname)
*/
public class MyFilter implements FileFilter{
// listFiles() 调用方法accept() 必须传递参数
public boolean accept(File pathname){
// pathname 接受的也是文件的全路径 E:\workspace\Demo\sfa.java
// 对文件进行判断(文件的后缀结尾是.java),若是java文件返回true, 否则返回false
String str = pathname.getName(); // 获取路径中最后部分的名字
return str.endsWith(".java"); // 判断一个字符串的结尾是否为".java",若是返回true ,否则返回false
}
}
import java.io.File;
/*
* File类的获取,文件获取过滤器
* 遍历目录的时候,可以根据需要,只获取满足条件的文件
* 遍历目录方法listFiles()的重载形式 listFiles(FileFilter filter) 接口类型
* 传递FileFilter接口的实现类(自定义FileFilter接口实现类,重写抽象方法)
*/
public class FileFilterDemo1 {
public static void main(String[] args) {
File file = new File("E:\\workspace\\Demo");
// 1. listFiles()遍历目录的同时,获得文件名全路径,调用过滤器的方法accept(File pathname),并将路径传给参数pathname
// 2. 在accept方法中进行判断,若这个文件是java文件,返回true,否则返回false。
// 3. 一旦方法返回true,listFiles()将路径保存到fileArr中
File[] fileArr = file.listFiles(new MyFilter());
for(File s:fileArr){
System.out.println(s);
}
}
}
【递归调用全目录】
import java.io.File;
/*
* 对"E:\\workspace\\Demo"目录下的所有内容,进行完全的遍历
*/
public class FileDemo7 {
public static void main(String args[]){
File file = new File("E:\\workspace\\Demo");
getAllDir(file);
}
// 定义方法,实现目录的全遍历
public static void getAllDir(File dir){
System.out.println(dir);
// 调用listFiles()方法对dir进行遍历
File[] listDir = dir.listFiles();
for(File f:listDir){
// 若 f 为文件夹,调用函数getAllDir()对f进行遍历
if(f.isDirectory()){ // 判断是否为文件夹,若是则返回true,否则返回false
//System.out.println(f);
getAllDir(f);
// 若 f 不是文件夹,则直接输出f
}else{
System.out.println(f);
}
}
}
}
/* 打印输出
E:\workspace\Demo
E:\workspace\Demo\a
E:\workspace\Demo\a\1.txt
E:\workspace\Demo\ab.txt
E:\workspace\Demo\b
E:\workspace\Demo\b\1.txt
E:\workspace\Demo\sfa.java
*/
【递归】
/*
* 方法的递归调用: 方法自己调用自己
* 适用于:方法的主体不变,但是运行的时候参与的方法参数会发生改变
* 注意: 1. 递归一定要有出口,必须要程序能停下来
* 2. 递归次数不能过多
* 3. 构造方法禁止递归
*/
public class DiGuiDemo1 {
public static void main(String[] args) {
int sum = getSum(4);
System.out.println(sum); // 6
System.out.println(getFB(3)); // 2
}
// 1. 利用递归的思想,求1+2+3+...+n之和
// 也可以计算阶乘 ,将n+getSum(n-1)改为n*getSum(n-1)
public static int getSum(int n){
// 递归返回条件
if(n == 1)
return 1;
return n+getSum(n-1);
}
// 2. 利用递归的思想,求斐波那契数列 0 1 1 2 3 5 8 13 21
public static int getFB(int month){
if(month == 0)
return 0;
if(month == 1)
return 1;
return getFB(month-1)+getFB(month-2);
}
}
【遍历目录下的所有.java文件】
import java.io.File;
import java.io.FileFilter;
public class MyFilter implements FileFilter {
@Override
// 若为文件夹或文件名是".java"返回true,否则返回false
public boolean accept(File pathname) {
// 获取路径中的文件名,并将文件名转化为小写
if(pathname.isDirectory())
return true;
String str = pathname.getName().toLowerCase();
return str.endsWith(".java");
}
}
import java.io.File;
/*
* 寻找目录"E:\workspace\Demo"下的所有.java文件
*/
public class FileFilterDemo1 {
public static void main(String[] args) {
File file = new File("E:\\workspace\\Demo");
getAllJava(file);
}
// 利用递归的思想获取指定文件夹下的".java"文件
public static void getAllJava(File file){
// 调用File 对象方法listFile() 并加入过滤器
File[] fileArr = file.listFiles(new MyFilter());
for(File f:fileArr){
// 对 f 路径进行判断是否为文件夹
if(f.isDirectory()){
// 递归进入文件夹遍历
getAllJava(f);
}else{
System.out.println(f);
}
}
}
}
/*
E:\workspace\Demo\a\zx.java
E:\workspace\Demo\b\ew.JAVA
E:\workspace\Demo\sfa.java
*/