欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java讀取磁盤并遍歷磁盤文件過程解析

 更新時間:2019年09月17日 09:43:28   作者:冰湖一角  
這篇文章主要介紹了java讀取磁盤并遍歷磁盤文件過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

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);//剩余磁盤空間大小
}

默認獲取磁盤空間單位是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;
}

如果不需要推送進度的話,可以直接調(diào)用Files.copy(source, out)方法進行復(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)文章

最新評論