`

java获取操作系统盘符的代码分享

阅读更多
有时,我们在编程的时候不得不用到操作系统所在的磁盘的盘符.
然而,java并没有提供获取盘符的方法,所以只能我们自己写代码来获得.
以下是我写的一个获取操作系统盘符的方法,该方法是直接在java里面执行Windows的cmd命令,来获得输出的.同理,还可以利用该方法获得很多其它的参数.
public class FileRoots {

	public static void main(String[] args) {
		String osDisk = execCmd("echo %SystemDrive%");
		System.out.println(osDisk);
	}

	private static String execCmd(String cmd) {
		try {
			final CountDownLatch threadSignal = new CountDownLatch(2);
			
			final Process pro = Runtime.getRuntime().exec("cmd /c " + cmd);
			pro.getOutputStream().close();
			
			final StringBuilder sb = new StringBuilder();
			//新建以下两个线程是为了防止阻塞
			Runnable errThread = new Runnable() {
				@Override
				public void run() {
					try {
						InputStream is = pro.getErrorStream();
						InputStreamReader isr = new InputStreamReader(is);
						BufferedReader br = new BufferedReader(isr);
						String line = "";
						while((line = br.readLine()) != null) {
							sb.append(line);
						}
					} catch (IOException e) {
						e.printStackTrace();
					}
					
					threadSignal.countDown();//线程结束时计数器减1 
				}
			};
			
			if(sb.length() > 0) {
				sb.deleteCharAt(0);
			}
			
			new Thread(errThread).start();
			
			Runnable inputThread = new Runnable() {
				@Override
				public void run() {
					try {
						InputStream is = pro.getInputStream();
						InputStreamReader isr = new InputStreamReader(is);
						BufferedReader br = new BufferedReader(isr);
						String line = "";
						while((line = br.readLine()) != null) {
							sb.append(line);
						}
						
						is.close();
						isr.close();
						br.close();
					} catch (IOException e) {
						e.printStackTrace();
					}
					
					threadSignal.countDown();//线程结束时计数器减1 
				}
			};
			
			new Thread(inputThread).start();
			
			// 主程序等待子线程执行完毕
			try {
				threadSignal.await();
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			
			return sb.toString();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return null;
	}

}
分享到:
评论
1 楼 liushengjie 2013-03-10  
System.getenv("SYSTEMDRIVE")
=>
C:

相关推荐

Global site tag (gtag.js) - Google Analytics