示例1
掃描指定目錄,并找到名稱(chēng)中包含指定字符的所有普通文件(不包含目錄),并且后續(xù)詢(xún)問(wèn)用戶(hù)是否要?jiǎng)h除該文件
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("請(qǐng)輸入要掃描的根目錄(絕對(duì)路徑 OR 相對(duì)路徑): ");
String rootDirPath = scanner.next();
File rootDir = new File(rootDirPath);
if (!rootDir.isDirectory()) {
System.out.println("您輸入的根目錄不存在或者不是目錄,退出");
return;
}
System.out.print("請(qǐng)輸入要找出的文件名中的字符: ");
String token = scanner.next();
List<File> result = new ArrayList<>();
// 因?yàn)槲募到y(tǒng)是樹(shù)形結(jié)構(gòu),所以我們使用深度優(yōu)先遍歷(遞歸)完成遍歷
scanDir(rootDir, token, result);
System.out.println("共找到了符合條件的文件 " + result.size() + " 個(gè),它們分別
是");
for (File file : result) {
System.out.println(file.getCanonicalPath() + " 請(qǐng)問(wèn)您是否要?jiǎng)h除該文
件?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
進(jìn)行普通文件的復(fù)制
import java.io.*;
import java.util.Scanner;
public class FileCopy {
public static void main(String[] args) {
// 實(shí)現(xiàn)文件復(fù)制.
// 1. 先輸入要復(fù)制哪個(gè)文件(源文件), 以及把這個(gè)文件復(fù)制到哪里去(目標(biāo)文件)~~
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入源文件: ");
// srcFile 形如 d:/cat.jpg
File srcFile = new File(scanner.next());
System.out.println("請(qǐng)輸入目標(biāo)文件: ");
// destFile 形如 d:/cat2.jpg
File destFile = new File(scanner.next());
if (!srcFile.isFile()) {
System.out.println("輸入的源文件有誤!");
return;
}
if (!destFile.getParentFile().isDirectory()) {
System.out.println("輸入的目標(biāo)文件有誤!");
return;
}
// 2. 打開(kāi)源文件, 按照字節(jié)讀取內(nèi)容, 依次寫(xiě)入到目標(biāo)文件中.
try (InputStream inputStream = new FileInputStream(srcFile);
OutputStream outputStream = new FileOutputStream(destFile)) {
// 讀 src 的每個(gè)字節(jié), 寫(xiě)入到 dest 中.
while (true) {
int ret = inputStream.read();
if (ret == -1) {
break;
}
outputStream.write(ret);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例3文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-576608.html
掃描指定目錄,并找到名稱(chēng)或者內(nèi)容中包含指定字符的所有普通文件(不包含目錄)
注意:我們現(xiàn)在的方案性能較差,所以盡量不要在太復(fù)雜的目錄下或者大文件下實(shí)驗(yàn)文章來(lái)源地址http://www.zghlxwxcb.cn/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. 輸入路徑和要查詢(xún)的關(guān)鍵詞
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入要掃描的路徑: ");
File rootDir = new File(scanner.next());
System.out.println("請(qǐng)輸入要查詢(xún)的詞: ");
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. 再檢查文件內(nèi)容
try (InputStream inputStream = new FileInputStream(f)) {
StringBuilder stringBuilder = new StringBuilder();
Scanner scanner = new Scanner(inputStream);
// 這個(gè)地方需要按行讀取了~~
while (scanner.hasNextLine()) {
stringBuilder.append(scanner.nextLine() + "\n");
}
if (stringBuilder.indexOf(toFind) > -1) {
System.out.println(f.getCanonicalPath() + " 文件內(nèi)容包含 " + toFind);
}
}
}
}
到了這里,關(guān)于【當(dāng)學(xué)C語(yǔ)言 或者 java 或者 python時(shí) 是不是IO文件操作部分很難學(xué)懂?這三道例題幫你理解IO】【IO三道例題】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!