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读取本机磁盘及遍历磁盘文件的主要内容,如果未能解决你的问题,请参考以下文章

如何把本机的东西磁盘映射到虚拟机中

通过“远程桌面连接”工具,共享本机磁盘到远程服务器

将单例对象保存到磁盘 - 本机 Iphone 应用程序

如何将ftp服务器映射为本机磁盘

HDFS 核心原理

HDFS 核心原理