⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diskutil.java

📁 论坛软件系统亦称电子公告板(BBS)系统
💻 JAVA
字号:
package cn.jsprun.utils;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.StringTokenizer;

public class DiskUtil {

	public static long getFreeSpace(String path) throws Exception {
		if (System.getProperty("os.name").startsWith("Windows")) {
			return getFreeSpaceOnWindows(path);
		}else if (System.getProperty("os.name").startsWith("Linux")) {
			return getFreeSpaceOnLinux(path);
		}
		throw new Exception("无法获取空间大小!");
	}

	private static long getFreeSpaceOnWindows(String path) throws Exception {
		long bytesFree = -1;

		File script = new File(System.getProperty("java.io.tmpdir"),"script.bat");
		PrintWriter writer = new PrintWriter(new FileWriter(script, false));
		writer.println("dir \"" + path + "\"");
		writer.close();

		Process p = Runtime.getRuntime().exec(script.getAbsolutePath());
		InputStreamReader isr=new InputStreamReader(p.getInputStream());
		BufferedReader br=new BufferedReader(isr);
		String content=br.readLine();
		StringBuffer buffer = new StringBuffer();
		while(content!=null)
		{
			buffer.append(content+"\n");
			content=br.readLine();
		}
		isr.close();
		br.close();
		String outputText = buffer.toString();
		StringTokenizer tokenizer = new StringTokenizer(outputText, "\r\n");
		while (tokenizer.hasMoreTokens()) {
			String line = tokenizer.nextToken().trim();
			if (line.endsWith("可用字节")) {
				String[] bytesFrees =line.split(" ");
				bytesFree = Long.parseLong(bytesFrees[bytesFrees.length-2].replaceAll(",", ""));
			}
		}
		return bytesFree;
	}

	private static long getFreeSpaceOnLinux(String path) throws Exception {
		long bytesFree = -1;

		Process p = Runtime.getRuntime().exec("df " + "/" + path);
		InputStream reader = new BufferedInputStream(p.getInputStream());
		StringBuffer buffer = new StringBuffer();
		for (;;) {
			int c = reader.read();
			if (c == -1)
				break;
			buffer.append((char) c);
		}
		String outputText = buffer.toString();
		reader.close();
		StringTokenizer tokenizer = new StringTokenizer(outputText, "\n");
		tokenizer.nextToken();
		if (tokenizer.hasMoreTokens()) {
			String line2 = tokenizer.nextToken();
			StringTokenizer tokenizer2 = new StringTokenizer(line2, " ");
			if (tokenizer2.countTokens() >= 4) {
				tokenizer2.nextToken();
				tokenizer2.nextToken();
				tokenizer2.nextToken();
				bytesFree = Long.parseLong(tokenizer2.nextToken());
				return bytesFree;
			}

			return bytesFree;
		}

		throw new Exception("Can not read the free space of " + path + " path");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -