남은 디스크 공간 확보

6979 단어

방법1:
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;

public class GetDiskSpaceInfo {

	public static void main(String[] args) {

		try {

			// File.listRoots()           。
			//            ,                       。
			for (int c = 0; c < File.listRoots().length; c++) {

				String dirName = File.listRoots()[c].getPath();

				long freeSpace = getFreeDiskSpace(dirName);

				if (freeSpace != -1) {

					long number = Math.round(freeSpace / (1024.00 * 1024.00));

					System.out.println(dirName + "      : " + number + "MB");

				}

			}

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	private static long getFreeDiskSpace(String dirName) throws Exception {

		String osName = System.getProperty("os.name");

		if (!(osName.equalsIgnoreCase("windows XP") || osName
				.equalsIgnoreCase("windows 2000")))
			return -1;

		String command = "cmd exe /c dir " + dirName; //       
		// System.out.println(command); //          

		Process process = Runtime.getRuntime().exec(command); //         。

		if (process == null)
			return -1;

		BufferedReader br = new BufferedReader(new InputStreamReader(
				process.getInputStream()));

		String line = "";

		String lastLine = "";

		while ((line = br.readLine()) != null) { //        , while               。

			// System.out.println(line);             

			lastLine = line;//              

		}

		lastLine = lastLine.replaceAll(",", ""); //    2,146,623,488     。

		String[] items = lastLine.split(" ");

		long freeSpace = -1;

		for (int i = (items.length - 1); i > 0; i--) { //             。

			try {

				freeSpace = Long.parseLong(items[i]);

				break; //              。

			} catch (NumberFormatException nfe) {

				continue; //          。

			}

		}

		return freeSpace;

	}

}

결실
C:\남은 공간: 15055MB D:\남은 공간: 13843MB
방법2: Jconfig를 사용하여 플랫폼 간에http://www.tolstoy.com/samizdat/jconfig.Html에서 jconfig를 다운로드합니다.다운로드한 가방의 Sample에는 디스크 공간을 얻으려면 File Registry를 사용하십시오.getVolumes () 는 DiskVolume () 를 받고 call getFreeSpace () 와 getMaxCapacity () 는 이렇게 간단합니다.:방법3:jni 이것은os와 관련된 모든 조작을 해결하는 만능이기입니다.예는 나도 쓰기 귀찮다.dll을 쓰고 콜을 하면 됩니다.
다음은 JConfig의 구체적인 사용법을 옮겨 싣겠습니다.
 
JConfig은 핵심 자바 API에 대한 확장 library로 jni를 통해 각종 플랫폼에서 응용 프로그램을 호출하여 핵심 자바 API가 직접 얻을 수 없는 시스템 정보를 얻는다.이것은 고품질, 확장 가능한 자바 응용 프로그램을 만드는 데 도움을 줄 수 있습니다. JConfig을 사용하려면 JConfig가 실행할 때 필요한 모든 파일을 찾을 수 있는지 확인하고, JConfig를 초기화해야 합니다.설치할 때 문제가 발생하면 첨부된 예와 도움말 파일을 참조하여 JConfig를 초기화하는 방법을 찾아보십시오.첨부된 예와 프로그램은 소스/com/tolstoy/testjc 디렉터리에 있습니다.
JConfig와 함께 제공되는 파일: 1.JConfig.zip(모든 플랫폼에 적합) - 모든 플랫폼에 적합한.class 파일 2.jconfig.cfg,jcfactrz.txt,jcprops.txt(모든 플랫폼에 적합) - 구성 정보와 지원 문서가 포함됩니다.jcnfigSN.dll,jcnfigSW.sll, etc. - 윈도우즈 DLL 4.JConfig.shlb(Mac 플랫폼용) - Mac 공용 library 5.libjconfiglx0.so(linux 플랫폼에 적용) Linux의 공공 library
JConfig를 사용하면 세 가지 기본 절차가 포함됩니다.jconfig 확인zip은classpath에 있습니다.2. jconfig가 사용할 때의 로컬 코드 라이브러리를 찾을 수 있는지 확인하십시오 3.파일 설명을 지원하는 로컬 디렉토리 파일 객체를 포함하는 FileRegistry를 호출합니다.initialize () 방법
이 지원 파일이 응용 프로그램 디렉터리에 있다고 가정하면 File Registry를 이렇게 호출해야 합니다.initialize() 방법curDir = new File(System.getProperty("user.dir"));FileRegistry.initialize( curDir, 0 );
참고: 디렉토리를 적용할 수 있는 권한은 쓰기 가능해야 합니다.프로그램이 더 이상 필요하지 않을 때까지 임시 파일을 이 디렉터리 아래에 만들 것입니다.다음 버전에서는 응용 프로그램 디렉터리 아래에 디렉터리가 FileRegistry에 전달되면 프로필을 만들 수 있습니다.initialize () 가 모든 지원 파일을 포함하지 않으면 JConfig는 내부에 저장된 기본값을 사용합니다.단, 이런 행동을 사용하지 마십시오. 디렉터리에 지원하는 파일이 모두 포함되어 있는지 확인하십시오.JConfig에서 이러한 파일 중 하나를 찾을 수 없으면 파일을 찾을 수 없다는 경고 메시지가 콘솔에서 인쇄됩니다.경고 메시지가 나타나면 디렉토리 아래에 파일이 있는지 확인합니다.source/com/tolstoy/testjc 디렉터리에서Tester.자바 프로그램은'double Check JConfig Initialization Directory () '방법을 포함하고 있으며,' jconfig '를 확인하기 위해 사용할 수 있습니다.cfg' and 'jcfactrz.txt는 그 디렉터리에 저장됩니다.
만약 이 지원 파일들이 발견되고 지원하는 가상 컴퓨터에서 실행된다면, JConfig는 적합한 로컬 코드 라이브러리를 찾아서 JConfig를 정확하게 초기화할 것입니다
그러나 적절한 로컬 코드 라이브러리를 찾을 수 없으면 JConfig는 제한된 기능 세트만 제공할 수 있습니다.이 경우 JConfig에서 정보를 출력합니다: that File Registry Plain has been loaded 자세한 정보: JConfig는 세 가지 조작 방식이 있습니다. 이것은 어떻게 초기화되고 어떤 플랫폼에서 실행되는지에 달려 있습니다.full mode: 모든 File Registy 방법은 당신이 원하는 대로 정상적으로 작동할 수 있습니다.fallbak mode: 일부 FileRegisty 방법만 정상적으로 작동합니다. 대부분의 방법은null 또는 1.error mode: 모든 FileRegisty 메서드가 null 또는 -1로 반환됨
JConfig가 full mode에서 실행되도록 하려면 다음 규칙을 준수해야 합니다. 1.JConfig는 지원되는 플랫폼에서 실행되어야 합니다. 2.JConfig는 초기화되어야 하며 응용 프로그램 디렉토리에 jconfig가 포함되어 있어야 합니다.cfg와 jcfactrz.txt 이 두 파일.그리고 디렉터리는 쓸 수 있어야 합니다.3. 로컬 코드 라이브러리를 사용하려면 JConfig가 올바르게 초기화되고 필요한 모든 파일을 찾을 수 있어야 합니다. JConfig가 지원하는 플랫폼에서 실행되거나 fallback mode가 지원하지 않는 플랫폼에서 실행됩니다.(계속해서......)전재가 필요하다면 출처와 저자를 밝혀 주십시오.감사합니다 QQ: 221704 MSN:[email protected] EMAIL:[email protected]
 
추가 자료:http://www.buildapp.net/java/show.asp?id=8479
Windows에서 JConfig를 통해 남은 디스크 공간 정보 가져오기
JConfig은 여러 플랫폼에 걸쳐 있는 JAVA 확장 도구로 시스템 하부 명령을 투명하게 호출하여 디스크 용량, 남은 공간 크기 등 시스템 정보를 더 많이 얻을 수 있다.JConfig 다운로드 주소는 다음과 같습니다.http://www.simtel.net/product.download.mirrors.php?id=54577, 압축을 풀고 Samizdat\common 아래의 시리즈를 만듭니다.dll 파일을%JAVA 로 복사HOME%\jre\bin 디렉터리에서 JConfig는 시스템 이름, Java 가상 머신 유형, Java 버전 번호 등 정보를 통해 어떤 동적 링크 라이브러리를 불러올지 결정하고 프로그램의 컴파일 경로에 도입한다:samizdat\common\JConfig.zip 가방, 다음은 내가 쓴 예이다.
import java.io.File;   
  
import com.jconfig.DiskObject;   
import com.jconfig.FileRegistry;   
import com.jconfig.Trace;   
  
public class Spacechecker {   
    public static void main(String[] args) {   
        //       jconfig.cfg jcfactrzz.txt       ,           
        File file = new File("jconfig");   
        //           
        FileRegistry.initialize(file, 0);   
        Trace.setDestination(Trace.TRACE_SYSOUT);   
  
        //       ,        、        
        try {   
            DiskObject diskObj = FileRegistry.createDiskObject(   
                    new File("F:\\"), 0);   
            //          
            long totalSpace = diskObj.getFile().getTotalSpace();   
            System.out.println(totalSpace / 1024 / 1024 / 1024 + "G");   
            //            
            long freeSpace = diskObj.getFile().getFreeSpace();   
            System.out.println(freeSpace / 1024 / 1024 / 1024 + "G");   
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
}

좋은 웹페이지 즐겨찾기