java读取本机磁盘及遍历磁盘文件
Posted bingyimeiling
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);//剩余磁盘空间大小
默认获取磁盘空间单位是BT,操作系统是这样算的 1G=1024MB, 1MB=1024KB, 1KB=1024BT
以上运行结果如下:
C:\\; 119; 71; 71 D:\\; 299; 233; 233 E:\\; 309; 308; 308 F:\\; 321; 320; 320 W:\\; 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-G if (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\\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()); //创建目录rootPath String 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)方法进行复制文件。
7. 删除文件
File filePath = new File("D:/home/logs/backupsystem_error.log"); boolean result = filePath.delete();//true表示删除成功 System.out.println(result);
欢迎关注微信公众号【Java典籍】,收看更多Java技术干货!
▼微信扫一扫下图↓↓↓二维码关注
以上是关于java读取本机磁盘及遍历磁盘文件的主要内容,如果未能解决你的问题,请参考以下文章