一.File类
1.对象的创建
package org.starQeem;
import java.io.File;
/**
* @Date: ${DATE} ${TIME}
* @author: Qeem
*/
public class FileTest1 {
public static void main(String[] args) {
//1.创建一个File对象,指代某个具体的文件
// File f1 = new File("D:/FileDemo/ab.txt");
File f1 = new File("D:\\FileDemo\\ab.txt");
System.out.println(f1.getName());//获取文件名
System.out.println(f1.length());//获取文件大小
//2.创建一个File对象,代指某个目录
File f2 = new File("D:\\FileDemo\\ml");
System.out.println(f2.length());//获取目录大小(注意:是获取目录本身的大小而不是目录里所有文件的大小)
//3.注意:File对象可以指向一个不存在的文件路径
File f3 = new File("D:\\FileDemo\\abc");
System.out.println(f3.length());//不存在的话大小会是0
System.out.println(f3.exists());//判断该文件存不存在,存在返回true,不存在返回false
//4.我现在要定位的文件是在模块中,应该怎么定位呢?
//绝对路径:带盘符的,上面的都是
//也可以用相对路径(重点):不带盘符的,默认是直接去工程下寻找文件
File f4 = new File("src\\Qeem.txt");
System.out.println(f4.length());
}
}
2.File类:判断、判断信息相关的方法
package org.starQeem;
import java.io.File;
import java.text.SimpleDateFormat;
public class FileTest2 {
public static void main(String[] args) {
//1.创建文件对象,指代某个文件
File f1 = new File("D:\\FileDemo\\ab.txt");
//2.public boolean exists():判断当前文件对象,对应的文件路径是否存在,存在返回true,不存在返回false
System.out.println(f1.exists());
//3.public boolean isFile():判断当前文件对象指代的是否是文件
System.out.println(f1.isFile());
//4.public boolean isDirectory():判断当前文件对象指代的是否是文件夹
System.out.println(f1.isDirectory());
//5.public String getName():获取文件的名称(包含后缀)
System.out.println(f1.getName());
//6.public long length():获取文件的大小,返回字节个数
System.out.println(f1.length());
//7.public long lastModified():获取文件的最后修改时间
System.out.println(f1.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
System.out.println(sdf);
//8.public String getPath():获取创建文件对象时,使用的路径
File f2 = new File("D:\\FileDemo\\ml");
File f3 = new File("src\\Qeem.txt");
System.out.println(f2.getPath());
System.out.println(f3.getPath());
//9.public String getAbsolutePath():获取绝对路径
System.out.println(f2.getAbsolutePath());
System.out.println(f3.getAbsolutePath());
}
}
3.File类:创建、删除文件的方法
package org.starQeem;
import java.io.File;
import java.io.IOException;
public class FileTest3 {
public static void main(String[] args) throws IOException {
//1.public boolean createNewFile(): 创建一个新文件(文件内容为空):创建成功返回true,反之,返回false
File f1 = new File("D:\\FileDemo\\star.txt");
System.out.println(f1.createNewFile());
//2.public boolean mkdir():用于创建文件夹,注意:只能创建一级文件夹
File f2 = new File("D:\\FileDemo\\aaa\\bbb");
System.out.println(f2.mkdir());//三级文件夹,不行
File f3 = new File("D:\\aaa");
System.out.println(f3.mkdir());//一级文件夹,非常的行
//3.public boolean mkdirs():用于创建文件夹,注意:可以创建多级文件夹
File f4 = new File("D:\\FileDemo\\aaa\\bbb\\ccc");
System.out.println(f4.mkdirs());
//4.public boolean delete():删除文件,或者空文件注意:不能删除非空文件夹
System.out.println(f4.delete());
}
}
二.方法递归
1.方法递归的算法执行流程
代码
package org.starQeem.d2_recursion;
/*
* 目标:掌握递归的应用,执行流程和算法思想
* */
public class RecursionTest1 {
public static void main(String[] args) {
System.out.println("5的阶乘是:" + f(5));
System.out.println("1~100的和是:" + add(100));
}
public static int add(int n){
if (n == 1){
return n;
}else {
return n += add(n - 1);
}
}
public static int f(int n){
//终结点
if (n == 1){
return 1;
}else {
return f(n - 1) * n;
}
}
}
运行结果
执行流程
2.文件搜索
package org.starQeem.d2_recursion;
import java.io.File;
/*
* 目标:掌握文件搜索的实现
* */
public class RecursionTest2 {
public static void main(String[] args) {
File file = new File("D:\\FileDemo");
searchFile(file,"ab.txt");
}
/**
* 去目录下搜索某个文件(不包括文件夹)
*
* @param dir 目录
* @param fileName 要搜索的文件名称
*/
public static void searchFile(File dir,String fileName){
//1.把非法情况都拦截住
if (dir == null || !dir.exists() || dir.isFile()){
return; //代表无法搜索
}
//2.dir不是null,存在,一定是对象目录
//获取当前目录下的全部一级目录文件
File[] files = dir.listFiles();
//3.判断当前目录下是否存在一级文件对象,以及是否可以拿到一级文件对象
if (files != null && files.length > 0){
//4.遍历全部一级对象
for (File f : files) {
//5.判断文件是否是文件,还是文件夹
if (f.isFile()){
//是文件,判断这个文件名是否是我们要找的
if (f.getName().contains(fileName)){ //路径上有没有包含文件名
System.out.println("找到了:" + f.getAbsolutePath());
}else {
//是文件夹,继续重复这个过程(递归)
searchFile(f,fileName);
}
}
}
}
}
}
三.字符集
Java代码完成编码、解码
package org.starQeem.d3_charset;
import java.util.Arrays;
public class Test {
public static void main(String[] args) throws Exception {
/*
* 编码和解码的方式不一样会导致乱码
* */
//1.编码
String data = "a我b";
byte[] bytes = data.getBytes(); //默认是按照平台字符集(UTF-8)进行编码的
System.out.println(Arrays.toString(bytes));
//按照指定字符集进行编码
byte[] bytes1 = data.getBytes("GBK"); //指定GBK进行编码
System.out.println(Arrays.toString(bytes1));
//2.解码
String s1 = new String(bytes); //按照平台默认编码(UTF-8解码)
System.out.println(s1);
String s2 = new String(bytes1); //GBK编码的(现在用UTF-8解码[平台默认])
System.out.println(s2); //乱码
String s3 = new String(bytes1, "GBK"); //指定GBK进行解码
System.out.println(s3); //ok
}
}
评论区