示例1
扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件
import java.io.*;
import java.util.*;
public class SearchDelete {
public static void main(String[] args) throws IOException {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入要扫描的根目录(绝对路径 OR 相对路径): ");
String rootDirPath = scanner.next();
File rootDir = new File(rootDirPath);
if (!rootDir.isDirectory()) {
System.out.println("您输入的根目录不存在或者不是目录,退出");
return;
}
System.out.print("请输入要找出的文件名中的字符: ");
String token = scanner.next();
List<File> result = new ArrayList<>();
// 因为文件系统是树形结构,所以我们使用深度优先遍历(递归)完成遍历
scanDir(rootDir, token, result);
System.out.println("共找到了符合条件的文件 " + result.size() + " 个,它们分别
是");
for (File file : result) {
System.out.println(file.getCanonicalPath() + " 请问您是否要删除该文
件?y/n");
String in = scanner.next();
if (in.toLowerCase().equals("y")) {
file.delete();
}
}
}
private static void scanDir(File rootDir, String token, List<File> result) {
File[] files = rootDir.listFiles();
if (files == null || files.length == 0) {
return;
}
for (File file : files) {
if (file.isDirectory()) {
scanDir(file, token, result);
} else {
if (file.getName().contains(token)) {
result.add(file.getAbsoluteFile());
}
}
}
}
}
示例2
进行普通文件的复制
import java.io.*;
import java.util.Scanner;
public class FileCopy {
public static void main(String[] args) {
// 实现文件复制.
// 1. 先输入要复制哪个文件(源文件), 以及把这个文件复制到哪里去(目标文件)~~
Scanner scanner = new Scanner(System.in);
System.out.println("请输入源文件: ");
// srcFile 形如 d:/cat.jpg
File srcFile = new File(scanner.next());
System.out.println("请输入目标文件: ");
// destFile 形如 d:/cat2.jpg
File destFile = new File(scanner.next());
if (!srcFile.isFile()) {
System.out.println("输入的源文件有误!");
return;
}
if (!destFile.getParentFile().isDirectory()) {
System.out.println("输入的目标文件有误!");
return;
}
// 2. 打开源文件, 按照字节读取内容, 依次写入到目标文件中.
try (InputStream inputStream = new FileInputStream(srcFile);
OutputStream outputStream = new FileOutputStream(destFile)) {
// 读 src 的每个字节, 写入到 dest 中.
while (true) {
int ret = inputStream.read();
if (ret == -1) {
break;
}
outputStream.write(ret);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例3文章来源:https://www.toymoban.com/news/detail-576608.html
扫描指定目录,并找到名称或者内容中包含指定字符的所有普通文件(不包含目录)
注意:我们现在的方案性能较差,所以尽量不要在太复杂的目录下或者大文件下实验
文章来源地址https://www.toymoban.com/news/detail-576608.html
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
public class Demo8 {
public static void main(String[] args) throws IOException {
// 1. 输入路径和要查询的关键词
Scanner scanner = new Scanner(System.in);
System.out.println("请输入要扫描的路径: ");
File rootDir = new File(scanner.next());
System.out.println("请输入要查询的词: ");
String toFind = scanner.next();
// 2. 递归的扫描目录.
scanDir(rootDir, toFind);
}
private static void scanDir(File rootDir, String toFind) throws IOException {
File[] files = rootDir.listFiles();
if (files == null) {
return;
}
for (File f : files) {
if (f.isDirectory()) {
scanDir(f, toFind);
} else {
checkFile(f, toFind);
}
}
}
private static void checkFile(File f, String toFind) throws IOException {
// 1. 先检查文件名
if (f.getName().contains(toFind)) {
System.out.println(f.getCanonicalPath() + " 文件名中包含 " + toFind);
}
// 2. 再检查文件内容
try (InputStream inputStream = new FileInputStream(f)) {
StringBuilder stringBuilder = new StringBuilder();
Scanner scanner = new Scanner(inputStream);
// 这个地方需要按行读取了~~
while (scanner.hasNextLine()) {
stringBuilder.append(scanner.nextLine() + "\n");
}
if (stringBuilder.indexOf(toFind) > -1) {
System.out.println(f.getCanonicalPath() + " 文件内容包含 " + toFind);
}
}
}
}
到了这里,关于【当学C语言 或者 java 或者 python时 是不是IO文件操作部分很难学懂?这三道例题帮你理解IO】【IO三道例题】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!