java讀取磁盤并遍歷磁盤文件過程解析
1. 獲取本機所有盤符信息
//1. 獲取本機盤符
File[] roots = File.listRoots();
for (int i = 0; i < roots.length; i++) {
System.out.print(roots[i].getPath()+"; ");//磁盤路徑
System.out.print(roots[i].getTotalSpace()/1024/1024/1024+"; ");//磁盤總空間大小
System.out.print(roots[i].getUsableSpace()/1024/1024/1024+"; ");//剩余磁盤空間大小
System.out.println(roots[i].getFreeSpace()/1024/1024/1024);//剩余磁盤空間大小
}
默認(rèn)獲取磁盤空間單位是BT,操作系統(tǒng)是這樣算的 1G=1024MB, 1MB=1024KB, 1KB=1024BT
以上運行結(jié)果如下:
C:\; 119; 71; 71 D:\; 299; 233; 233 E:\; 309; 308; 308 F:\; 321; 320; 320 W:\; 588; 358; 358
其中W盤為網(wǎng)盤。
2. 僅獲取本地磁盤(除去網(wǎng)絡(luò)磁盤等)
File[] roots = File.listRoots();
FileSystemView sys = FileSystemView.getFileSystemView();
for (int i = 0; i < roots.length; i++) {
if(!sys.getSystemTypeDescription(roots[i]).equals("本地磁盤")){
continue;
}
System.out.println(roots[i].getPath());// 磁盤路徑
}
輸出結(jié)果:
C:\ D:\ E:\ F:\
3.在某一磁盤新建文件
File file = new File("F:\\test\\a\\b");
if (!file.exists()) {
file.mkdirs();// 目錄不存在,創(chuàng)建根目錄
}
4. 遍歷某一個盤符的文件
File file = new File("E:\\");
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
System.out.println(file.getTotalSpace()/1024/1024/1024);// b-kb-M-G
if (file.isAbsolute()) { // 判斷是否為根目錄
File[] list = file.listFiles(); // 使用數(shù)組接收帶有完整路徑的文件夾
for (int i = 0; i < list.length; i++) {
System.out.println(list[i].getPath());
System.out.println(list[i].getTotalSpace());
System.out.println(dateFormat.format(list[i].lastModified()));
}
}
5.遍歷某一文件夾下的文件
File file = new File("F:\\test");
getAllFilePath(file);
public static void getAllFilePath(File dir){
File[] files=dir.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
System.out.println(files[i].getPath());
//這里面用了遞歸的算法
getAllFilePath(files[i]);
} else {
System.out.println(files[i].getPath());
}
}
}
輸入結(jié)果:
F:\test\a F:\test\a\b
6. 獲取某一個盤符或文件夾下的所有文件的大小
File file = new File("F:\\test");
getAllFileSize(file);
public static long getAllFileSize(File dir){
File[] files=dir.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isDirectory()){
//這里面用了遞歸的算法
getAllFileSize(files[i]);
} else {
sum+=files[i].length();
System.out.println(files[i]+"的大?。?+files[i].length());
}
}
return sum;
}
7. 保存文件
File filePath = new File("D:\\11.png");
String fileToday = DateUtils.formatTimeYMD(new Date());
//創(chuàng)建目錄rootPath
String rootPath = "E:/fileUpload/"+fileToday+"/";
File file = new File(rootPath);
if (!file.exists()) {
file.mkdirs();//目錄不存在,創(chuàng)建根目錄
}
String picPath = getPath(rootPath, "videoFile");
saveFile(picPath, filePath);
private static boolean saveFile(String path,File uploadFile) {
//Files.copy(source, out);//可以直接用這個方法保存
int bufferSize = 8192;//8kb
//寫文件
try {
File f = new File(path+"/", uploadFile.getName());
if (!f.exists()) {
f.createNewFile();
}
InputStream in = new BufferedInputStream(new FileInputStream(uploadFile),bufferSize);
OutputStream out =new BufferedOutputStream(new FileOutputStream(f),bufferSize) ;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = in.read(buffer)) >0) {
out.write(buffer,0,len);
}
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
return false;
}
return true;
}
如果不需要推送進(jìn)度的話,可以直接調(diào)用Files.copy(source, out)方法進(jìn)行復(fù)制文件。
8. 刪除文件
File filePath = new File("D:/home/logs/backupsystem_error.log");
boolean result = filePath.delete();//true表示刪除成功
System.out.println(result);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot項目中的多數(shù)據(jù)源支持的方法
本篇文章主要介紹了SpringBoot項目中的多數(shù)據(jù)源支持的方法,主要介紹在SpringBoot項目中利用SpringDataJpa技術(shù)如何支持多個數(shù)據(jù)庫的數(shù)據(jù)源,有興趣的可以了解一下2017-10-10
RestTemplate發(fā)送get和post請求,下載文件的實例
這篇文章主要介紹了RestTemplate發(fā)送get和post請求,下載文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
mybatisplus實現(xiàn)自動創(chuàng)建/更新時間的項目實踐
Mybatis-Plus提供了自動填充功能,可以通過實現(xiàn)MetaObjectHandler接口來實現(xiàn)自動更新時間的功能,本文就來介紹一下mybatisplus實現(xiàn)自動創(chuàng)建/更新時間的項目實踐,感興趣的可以了解下2024-01-01
java使用Stream流對自定義對象數(shù)組去重的實現(xiàn)
本文主要介紹了java使用Stream流對自定義對象數(shù)組去重的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
新建Maven工程出現(xiàn)Process?Terminated的問題解決
當(dāng)Maven出現(xiàn)"Process terminated"錯誤時,這通常是由于配置文件或路徑錯誤導(dǎo)致的,本文主要介紹了新建Maven工程出現(xiàn)Process?Terminated的問題解決,感興趣的可以了解一下2024-04-04

