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

网友投稿 208 2023-06-14

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

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

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();

}

InputSfkOyKCGkBttream 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);

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

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();

}

InputSfkOyKCGkBttream 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);

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();

}

InputSfkOyKCGkBttream 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);

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java实现发送手机短信语音验证功能代码实例
下一篇:Python爬虫 12306抢票开源代码过程详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~