JAVA EE初阶 4:文件操作和IO
1.认识文件 2.文件系统操作 3.文件内容操作 4.练习
1.认识文件
1.1 文件路径
1.2 文件种类
查看字符编码(UTF-8)http://www.mytju.com/classCode/tools/encode_utf8.asp
2.文件系统操作
创建、删除、移动文件、获取文件属性…
2.1 File属性、构造方法
主要使用第二个版本 File(String pathname) ,第一和第三个中的String child都是相对路径,前面的都是基准路径(字符串/File对象)
2.2 File方法
2.2.1 返回路径
2.2.2 判断
2.2.3 创建与删除
2.2.4 返回
2.2.5 其他
3.文件内容操作(读写文件--数据流)
3.1 字节流(读)--InputStream
3.2 字节流(写)--OutputStream
3.3 字符流(读 写)--Reader Writer
3.4 其他
4.练习
import java.io.File;
import java.util.Scanner;public class Demo {public static void main(String[] args) {//1. 让用户输入要查询的文件名Scanner sc = new Scanner(System.in);System.out.println("请用户输入要查询的目录:");String dir = sc.next();System.out.println("请用户输入要查询的文件名:");String filename = sc.next();//2. 判定目录是否存在File rootfile = new File(dir);if(!rootfile.isDirectory()){System.out.println("您输入的目录不存在");return;}//3. 进行搜索 递归的边里目录中所有文件和子目录scanDir(rootfile,filename);}private static void scanDir(File rootfile, String filename) {//可以看到递归过程 System.out.println("当前正在搜索的目录是:" + rootfile.getAbsolutePath());//1. 列出 rootfile 中的内容File[] files = rootfile.listFiles();if(files == null) return; //空目录//2. 遍历 files 数组,判定每个元素的类型for(File file : files){if(file.isDirectory()) scanDir(file,filename); //是一个目录,递归调用scanDir方法else if(file.isFile()){ if(file.getName().contains(filename)) tryDelete(file);}//是一个文件,判断文件名是否包含要查询的文件名}}private static void tryDelete(File file) {System.out.println("要删除的文件是:" + file.getAbsolutePath());Scanner sc = new Scanner(System.in);System.out.println("是否确认删除(Y/N):");String choice= sc.next();if(choice.equals("Y") || choice.equals("y")){file.delete();System.out.println("删除成功");}} }
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Scanner;public class Demo {public static void main(String[] args) {//1. 复制文件 让用户输入源文件路径和目标文件路径Scanner sc = new Scanner(System.in);System.out.println("请用户输入源文件路径:");String srcPath = sc.next();System.out.println("请用户输入目标文件路径:");String destPath = sc.next();//2. 判定源文件是否存在File srcFile = new File(srcPath);if(!srcFile.isFile()){System.out.println("您输入的源文件不存在");return;}//3. 判定目标文件的父目录是否存在 File destFile = new File(destPath);File parentFile = destFile.getParentFile();if(!parentFile.isDirectory()){System.out.println("您输入的目标文件的父目录不存在");return;}//4. 进行拷贝copy(srcFile,destFile);}private static void copy(File srcFile, File destFile) {try(InputStream is = new FileInputStream(srcFile);OutputStream os = new FileOutputStream(destFile);) {while (true) {byte[] buffer = new byte[1024];int len = is.read(buffer);if(len == -1) break;os.write(buffer,0,len);}} catch (IOException e) { e.printStackTrace(); }}}