`

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:

相关推荐

    c#获得本机盘符c#获得本机盘符源代码

    根据给定的信息,本文将详细解释如何在C#中获取本机的所有盘符,并通过一个具体的示例代码来展示这一过程。此知识点适用于初学者以及希望深入理解C#文件系统操作的开发人员。 ### 一、C#简介 C#(读作 C sharp)是...

    JAVA中获取硬盘序列号源码

    总结来说,Java获取硬盘序列号并非易事,因为它涉及到与操作系统的底层交互。通过JNA库,我们可以方便地调用C语言的API来实现这一功能,但需要注意的是,这可能会导致代码的可移植性降低。在实际开发中,根据项目...

    映射目录为磁盘的工具(含源码java)

    标题中的“映射目录为磁盘的工具(含源码java)”指的是一个使用Java编程语言编写的程序,其主要功能是能够将一个指定的文件夹虚拟化为一个磁盘驱动器,用户可以通过操作系统中未被占用的盘符来访问这个文件夹的内容。...

    Java基础语法.pdf

    这样,只需要为不同的操作系统安装相应的JVM,就可以使Java程序在多种平台上运行,从而实现了“一次编写,到处运行”的跨平台特性。 JRE(Java Runtime Environment,Java运行环境)和JDK(Java Development Kit,...

    Java安装:jdk-8u331-windows-x64.exe

    推荐将JDK安装在非系统盘符,以防止未来系统重装时影响Java的正常使用。 3. **环境变量配置**:安装完成后,通常需要手动配置环境变量。包括`JAVA_HOME`指向JDK的安装目录,`PATH`包含`%JAVA_HOME%\bin`,这样...

    JAVA开发学习第一天

    - **跨平台性**:Java程序可以在多种不同的操作系统上运行,这得益于Java虚拟机(JVM)的存在。JVM为Java提供了平台独立性,确保了“一次编写,到处运行”的特点。 #### 六、JAVA的下载与安装 - **官方下载地址**: ...

    jsp查询硬盘分区以及系统所在区域

    在Java编程语言中,JSP(JavaServer Pages)主要用于创建动态网页,而查询硬盘分区以及系统所在区域通常涉及操作系统层面的信息获取。为了实现这个功能,开发者通常会借助Java的Runtime类或者第三方库来与操作系统...

    java 使用dos命令详解

    在Java开发过程中,有时候我们需要执行一些特定的操作系统命令来完成特定的任务,尤其是在Windows平台上。本文将详细介绍如何在Java中调用DOS命令,并通过具体的示例来阐述这一过程。 #### 一、Java调用DOS命令的...

    java入门1

    首先,DOS命令是Windows操作系统中进行文件管理和系统操作的基本工具。`cd`用于改变当前目录,`cd..`返回上级目录,`c:`、`d:`、`e:`等切换盘符,`dir`列出当前目录下的文件和文件夹,`rd`删除目录,`del`删除文件,...

    Java读取并下载网络文件的方法

    * 跨平台:Java语言可以在多种操作系统上运行,因此可以在不同的平台上使用该方法。 Java读取并下载网络文件的应用场景 Java读取并下载网络文件的方法有以下几个应用场景: * 文件下载:可以使用该方法下载文件到...

    jdk1.8.0 32位 解压即用包 windows XP系统

    【标题与描述解析】 标题"jdk1.8.0 32位 解压即用包 windows XP系统"指的是一个特别为32位...然而,由于XP系统已过时,可能遇到兼容性和安全问题,所以推荐升级到更现代的操作系统以获得更好的开发体验和安全保障。

    java基础 IO流

    在进行文件操作时,必须注意文件的路径指定,如果忽略了盘符,系统通常会默认在当前项目的根目录下进行操作。对于文件的创建,`createNewFile()`方法会在指定路径上创建一个新文件,前提是这个文件不存在。相似地,`...

    Java基础知识总结(超详细整理)

    在Java概述部分,你需要下载和安装JDK(Java Development Kit),通常从Oracle官方网站获取,安装过程中注意选择与操作系统匹配的版本。安装完成后,JDK包含若干子目录,如bin目录下存放编译和运行Java程序的工具...

    java实现u盘指定内容的自动复制_.docx

    1. **文件系统的操作**:利用 `java.io.File` 类来获取系统盘符,并遍历文件。 2. **多线程技术**:使用 `java.lang.Thread` 来实现定时任务和并发处理。 3. **输入输出流**:运用 `java.io.InputStream` 和 `java....

    2022年从File类开始java IO 系统介绍域名服务器教程.docx

    - 路径表示方式与操作系统相关,如 Unix 使用 `/` 表示根目录,Windows 使用盘符表示。 - 相对路径不以 `/` 开头,相对于当前工作目录。 4. 文件属性获取: - `isDirectory()`:判断是否为目录。 - `isFile()`...

    Java课程设计的图片浏览器的原代码.docx

    1. **查找盘符**:遍历系统中的各个盘符以找到图片所在的目录。 2. **查找文件**:使用`FilenameFilter`实现对特定扩展名的文件筛选,这里我们关注.jpg、.JPG、.gif、.GIF、.png、.PNG、.jpeg和.JPEG这几种格式的...

    C院Java常用单词

    1. **API (Application Programming Interface)**:API是一组预定义的函数、类、接口和其他资源,允许开发者构建应用程序并与操作系统、数据库或其他软件组件进行交互。 2. **JRE (Java Runtime Environment)**:...

    我的学习笔记,记录从零学习java的点滴

    不同操作系统的 JVM 实现会有所不同,但它们都能解释并执行相同的字节码文件,从而确保了 Java 程序的跨平台性。 #### JRE 和 JDK - **JRE (Java Runtime Environment)**:它是运行 Java 程序所必需的环境,包括 ...

    电脑常用操作(Java开发方面的)

    在Windows操作系统中,可以使用命令行工具取消之前创建的共享文件夹。 **详细解释:** 如果你之前通过网络共享了某个文件夹,后来想要取消共享,可以通过命令行来进行操作: 1. 打开命令提示符窗口。 2. 输入命令`...

    java区分绝对路径和相对路径的方法

    在Java中,可以使用File类提供的separator属性来获取当前操作系统的默认路径分隔符。例如: ```java String pathSeparator = System.getProperty("file.separator"); ``` 这行代码会根据不同的操作系统返回相应的...

Global site tag (gtag.js) - Google Analytics