Java IO實踐
(一) 在電腦D盤下建立一個檔案為HelloWorld.txt檔案,判斷他是檔案還是目錄,在建立一個目錄IOTest,之後將HelloWorld.txt移動到IOTest目錄下去;之後遍歷IOTest這個目錄下的檔案.
public class Ex1 {
public static void main(String[] args) {
File hw = new File("U:", "HelloWorld.txt");
//檔案建立用createNewFile()方法, 成功返回true
try {
boolean success = hw.createNewFile();
if(success) {
System.out.println("檔案建立成功");
} else {
System.out.println("檔案建立失敗");
}
} catch (IOException e) {
System.out.println("檔案建立失敗");
}
if(hw.isFile()) {
System.out.println("It's a File.");
}
if(hw.isDirectory()) {
System.out.println("It's a Directory.");
}
//建立目錄mkdir
File dir = new File("U:/IOTest");
//如果路徑中有其他目錄不存在,則建立
dir.mkdirs();
//檔案移動renameTo
if(hw.renameTo(new File(dir.getPath(), hw.getName()))) {
System.out.println("檔案移動成功");
} else {
System.out.println("檔案移動失敗");
}
//遍歷檔案呼叫list
for(String c : dir.list()) {
System.out.println(c);
}
}
}
注意: new File()
並不會建立任何檔案或目錄,而只是建立一個抽象物件,真的在檔案系統中建立檔案或者目錄需要呼叫相應的方法,createNewFile()
或者mkdir(), mkdirs()
。均返回boolean
,代表建立成功與否。
(二) 遞迴實現輸入任意目錄,列出檔案以及資料夾
public class Ex2 {
private static void list(File file, String leadingSpaces) {
if(file.isFile()) {
System.out.println(leadingSpaces + file.getName());
return;
}
if(file.isDirectory()) {
System.out.println(leadingSpaces + file.getName());
for(File sf : file.listFiles()) {
list(sf, leadingSpaces + " ");
}
}
}
public static void main(String[] args) {
File file = new File("U:/KenView");
list(file, "");
}
}
注意:list() vs. listFiles()
list()
返回子檔案和目錄的名字資料listFiles()
返回子檔案陣列
(三) 遞迴實現列出當前工程下所有.java檔案
public class Ex3 {
public static void listJavaFiles(File file) {
if(file.exists()) {
if(file.isFile() && file.getName().toLowerCase().endsWith(".java")) {
System.out.println(file.getPath());
return;
}
if(file.isDirectory()) {
for(File f : file.listFiles()) {
listJavaFiles(f);
}
}
}
}
public static void main(String[] args) {
listJavaFiles(new File(".."));
}
}
注意:學會使用相對路徑
//得到當前路徑
listFiles(new File("."));
//得到上一級目錄
listFiles(new File(".."));
(四)檢視D盤中所有的檔案和資料夾名稱,並且使用名稱升序降序,資料夾在前和資料夾在
後,檔案大小排序等。
public class Ex4 {
private static List<File> list(File file) {
List<File> list = new ArrayList();
if(file.exists()) {
if(file.isFile()) {
list.add(file);
}
if(file.isDirectory()) {
for(File f : file.listFiles()) {
list.addAll(list(f));
}
}
}
return list;
}
public static void main(String[] args) {
List<File> list = list(new File("U:/KenView"));
//檔名稱排序
list.sort((f1, f2) -> f1.getPath().compareTo(f2.getPath()));
list.stream().forEach(f -> System.out.println(f.getPath()));
//檔案大小排序
list.sort((f1, f2) -> (int) (f1.length() - f2.length()));
list.stream().forEach(f -> {
System.out.printf("%5d %s", f.length(), f.getPath());
System.out.println();
});
}
}
注意:file.length()
得到檔案大小
/**
* Returns the length of the file denoted by this abstract pathname.
* The return value is unspecified if this pathname denotes a directory.
**/
(五) 在程式中寫一個"HelloJavaWorld你好世界"輸出到作業系統檔案Hello.txt檔案中
private static void inOut(String s, File outFile) {
BufferedReader reader = null;
BufferedWriter writer = null;
try {
if(!outFile.exists()) {
outFile.createNewFile();
}
reader = new BufferedReader(new StringReader(s));
writer = new BufferedWriter(new FileWriter(outFile));
String line;
while((line = reader.readLine()) != null) {
writer.write(line);
writer.newLine();
}
writer.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
}
}
}
注意:write()
之後記得flush()
檔案寫完記得關閉
相關文章
- 檔案IO操作的最佳實踐
- [java IO流]之 IO概述Java
- Java最佳實踐Java
- 檔案 IO 操作的一些最佳實踐
- java -IO流Java
- Java IO流Java
- Java IO: 流Java
- Java IO: InputStreamJava
- Java IO: OutputStreamJava
- Java IO流Java
- java - IO流Java
- Java null最佳實踐JavaNull
- golang中基於kevent的IO多路複用實踐Golang
- Java 非阻塞 IO 和非同步 IOJava非同步
- Java IO 和 NIOJava
- Java的IO流Java
- [Java基礎]IOJava
- Java IO之NIOJava
- Java IO: 網路Java
- Java IO: Reader And WriterJava
- 備戰-Java IOJava
- Java泛型及實踐Java泛型
- etcd 框架實踐【Java 版】框架Java
- Asyncdb(二):Java IO 初探Java
- Java:IO:深入理解Java
- java同步非阻塞IOJava
- 《Scalable IO in Java》譯文Java
- Java筆記-IO流Java筆記
- Java 檔案 IO 操作Java
- JAVA IO流-小白版Java
- 面試題-JAVA IO面試題Java
- 5⃣️ Java IO 技術Java
- Java IO: Reader和WriterJava
- 【重學Java】IO流Java
- Java——IO總結2Java
- Java IO流(詳細)Java
- Java8新特性實踐Java
- Java Optional使用的最佳實踐Java