首页 > 编程 > Java > 正文

java读取磁盘并遍历磁盘文件过程解析

2019-11-26 08:34:45
字体:
来源:转载
供稿:网友

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,操作系统是这样算的 1G=1024MB, 1MB=1024KB, 1KB=1024BT

以上运行结果如下:

C:/; 119; 71; 71D:/; 299; 233; 233E:/; 309; 308; 308F:/; 321; 320; 320W:/; 588; 358; 358

其中W盘为网盘。

2. 仅获取本地磁盘(除去网络磁盘等)

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());// 磁盘路径}

输出结果:

C:/D:/E:/F:/

3.在某一磁盘新建文件

File file = new File("F://test//a//b");if (!file.exists()) {  file.mkdirs();// 目录不存在,创建根目录}

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-Gif (file.isAbsolute()) { // 判断是否为根目录  File[] list = file.listFiles(); // 使用数组接收带有完整路径的文件夹  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());  }  } }

输入结果:

F:/test/aF:/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());//创建目录rootPathString rootPath = "E:/fileUpload/"+fileToday+"/";File file = new File(rootPath);if (!file.exists()) {  file.mkdirs();//目录不存在,创建根目录}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;}

如果不需要推送进度的话,可以直接调用Files.copy(source, out)方法进行复制文件。

8. 删除文件

File filePath = new File("D:/home/logs/backupsystem_error.log");boolean result = filePath.delete();//true表示删除成功System.out.println(result);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表