`

java 读取CD-ROM 光驱中文件

阅读更多
我编写了一个利用Java控制光驱的打开与关闭,并从光盘中拷贝文件到本地磁盘的一个工具类.
注意:此工具类只适合最基本的从CD\DVD上拷贝文件到本地,不适合其抓取音轨等复杂操作.
package com.multiable.Composite;

import java.io.File;
import java.io.FileWriter;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileSystemView;

/**
 * A program to Open CD drive using VB script with the help of JAVA
 * @author mark.wang
 * 
 */

public class CDUtils {
	private CDUtils() {
	}

	// 利用VB script 打开光驱
	public static void open(String drive) {
		try {
			File file = File.createTempFile("realhowto", ".vbs");
			file.deleteOnExit();
			FileWriter fw = new java.io.FileWriter(file);

			String vbs = "Set wmp = CreateObject(\"WMPlayer.OCX\") \n"
					+ "Set cd = wmp.cdromCollection.getByDriveSpecifier(\""
					+ drive + "\") \n cd.Eject";

			fw.write(vbs);
			fw.close();

			Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 利用VB script 关闭光驱
	public static void close(String drive) {
		try {
			File file = File.createTempFile("realhowto", ".vbs");
			file.deleteOnExit();
			FileWriter fw = new FileWriter(file);

			// to close a CD, we need eject two times!
			String vbs = "Set wmp = CreateObject(\"WMPlayer.OCX\") \n"
					+ "Set cd = wmp.cdromCollection.getByDriveSpecifier(\""
					+ drive + "\") \n cd.Eject \n cd.Eject ";

			fw.write(vbs);
			fw.close();

			Runtime.getRuntime().exec("wscript " + file.getPath()).waitFor();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 获取所有光驱的盘符列表
	public static ArrayList<File> findCDWin32() {
		FileSystemView fsv = FileSystemView.getFileSystemView();

		File[] roots = fsv.getRoots();
		if (roots.length == 1) {
			roots = roots[0].listFiles()[0].listFiles();
		} else {
			System.out.println("I guess you're not on Windows");
			return null;
		}

		ArrayList<File> foundDrives = new ArrayList<File>();
		for (int i = 0; i < roots.length; i++) {
			if (fsv.isDrive(roots[i])) {
				if (fsv.getSystemTypeDescription(roots[i]).indexOf("CD") != -1) {
					foundDrives.add(roots[i]);
				}
			}
		}

		return foundDrives;
	}
	
	public static void main(String[] args) {

		String cdDrive = "";
		
		if(findCDWin32().size() > 0) {
			File file = findCDWin32().toArray(new File[0])[0];
			cdDrive = file.getPath();
		} else {
			return;
		}
		
		// open the cd-rom
		JOptionPane.showConfirmDialog((java.awt.Component) null, "Press OK to open CD", "CDUtils", 
				javax.swing.JOptionPane.DEFAULT_OPTION);

		CDUtils.open(cdDrive);
	}

}
分享到:
评论
2 楼 xiaohuafyle 2014-10-31  
fzfz_902 写道
在windows sever 2008上报错!

报的什么错呀?
1 楼 fzfz_902 2014-10-30  
在windows sever 2008上报错!

相关推荐

    如何用编程获取cd-rom的驱动器盘符

    一台机器可能有不止一个CD-ROM驱动器。现在CD-ROM已经是PC机的标准配置,此外再装个可擦写的光盘驱动,甚至是DVD都是很常见的事情。不管一台机器上装多少个不同的驱动器,如何找到它们呢?请用下程序

    ISO打包文件和目录的源码

    ISO文件本质上是CD-ROM或DVD-ROM的一种标准镜像格式,名为ISO 9660,它允许我们将磁盘内容复制成一个单一的二进制文件,以便于在网络上传输、存储或刻录到物理光盘上。 **ISO文件的结构** ISO文件遵循ISO 9660文件...

    java英语面试的知识

    8. **光驱(Compact Disk Read Only Memory, CD-ROM)**:用于读取CD光盘的设备。随着技术发展,现在更多使用DVD-ROM和蓝光驱动器。 9. **DVD光驱(Digital Versatile Disk Read Only Memory, DVD-ROM)**:用于...

    计算机文化基础书后习题答案.pdf

    19. **CD-ROM速度**:8倍速CD-ROM驱动器的数据传输速率为900KB/s,这是CD-ROM的读取速度标准。 以上知识点涵盖了计算机基础的各个方面,对于理解和掌握计算机基本原理至关重要。在学习过程中,理解和应用这些知识点...

    2021-2022计算机二级等级考试试题及答案No.2864.docx

    6. 微机系统最基本的输出设备是显示器,而非CD-ROM,CD-ROM是光驱,用于读取光盘上的数据。 7. 操作系统的功能包括管理硬件和软件资源,提供用户接口,以及支持软件开发和运行的环境,描述正确。 8. SQL查询中,`...

    认识实习调研报告.docx

    - 光驱:CD-ROM光驱,如先锋DVR-218CHV,提供数据读取功能。 三、计算机应用领域 当前计算机应用广泛,涵盖办公自动化、图形图像处理、多媒体娱乐、网络通信、科学计算、游戏开发等多个领域。 四、流行开发软件 ...

    2021-2022计算机二级等级考试试题及答案No.9780.docx

    - **开发环境**:Java Applet的开发和运行需要JDK(Java Development Kit)的支持,编译后的字节码文件可在任何支持JVM的环境中执行。 ### 文本字段容量限制 - **知识点概述**:在数据库设计和应用开发中,对于...

    2021-2022计算机二级等级考试试题及答案No.12315.docx

    CD-ROM通常被认为是外部设备,因为它并不直接集成在计算机的主要硬件组件中,而是需要通过光驱等外部装置接入计算机进行读取。 ### 4. 向表中连续添加记录的方法 - **知识点**: 如何在数据库中连续添加多条记录。 ...

    2021-2022计算机二级等级考试试题及答案No.11947.docx

    9. **CD-ROM**:CD-ROM是一种只读光盘,属于计算机的外部存储设备(第9题)。 10. **二分查找**:在有序列表中进行二分查找,最坏情况下的比较次数是O(logn)(第10题)。 11. **SQL查询**:在SQL中,使用`DISTINCT...

    大学计算机基础习题答案.pdf

    - "CD-ROM"和"DVD-ROM"代表只读型光盘驱动器,用于读取CD和DVD盘片。 - "RAM"代表随机存取存储器,是计算机的主存储设备,用于暂存运行程序的数据和指令。 - "ROM"代表只读存储器,通常用于存储固件和启动程序。 ...

    一个记录光盘内容的小程序

    通过阅读和分析源码,人们可以了解如何使用编程语言(如C++, Python, 或者Java)来与光驱进行交互,读取光盘信息,并进行解析和展示。 “工具”标签则暗示这是一款实用软件,它的目的是为了帮助用户完成特定的任务...

    计算机英语名词简释

    - **CD-ROM/CD-RW/DVD-ROM/DVD-RW**: 不同类型的光盘驱动器,用于读取或写入光盘数据。 - **Modem**: 调制解调器,允许通过电话线进行数据传输。 - **Motherboard**: 主板,连接所有电脑组件的基础电路板。 - **...

    [专升本(国家)考试密押题库与答案解析]专升本计算机文化基础模拟6.docx

    2. DVD-ROM:DVD-ROM是一种大容量只读外部存储器,类似于CD-ROM,用于存储大量数据,如电影、音乐或软件。 3. 软件开发效率:为了提高开发效率,开发者通常会选择使用高级语言,如Java、Python或C++,因为它们具有...

    能查找到本地所有的驱动器,获取磁盘信息

    这段代码会打印出所有驱动器的名称(如"C:")、驱动器类型(如"固定磁盘"、"可移动磁盘"、"CD-ROM")、总容量和可用空间。值得注意的是,驱动器的图标信息并不直接包含在`DriveInfo`对象中,通常需要额外的系统调...

    2021-2022计算机二级等级考试试题及答案No.14223.docx

    25. 微机系统的基本输出设备:微机系统最基本的输出设备包括显示器和打印机,CD-ROM是光驱,用于读取光盘数据。 26. SQL功能:SQL支持数据定义(DDL)、查询(DQL)、操纵(DML)和控制(DCL)等功能。 27. 未提供...

    专题资料(2021-2022年)会计资格证 模拟题.doc

    10. 只读光盘的缩写:第十题中,只读光盘的英文缩写是CD-ROM(D选项)。 11. CPU与存储器:第十一题提到CPU不能直接访问的存储器是光盘(D选项),因为光盘是只读存储,通常需要通过光驱读取。 12. 存储器容量单位...

    2021-2022计算机二级等级考试试题及答案No.11126.docx

    - **硬件配置**:光驱用于读取CD/DVD中的多媒体文件;声卡用于音频输出;扬声器播放声音。 #### 18. Servlet中的输出流 - **知识点解析**: - **Servlet**是Java平台上的服务器端应用程序框架,用于生成动态Web...

    2021-2022计算机二级等级考试试题及答案No.15100.docx

    21. 微机系统的最基本输出设备是显示器和打印机,CD-ROM是光驱,属于输入设备。 22. 字符'1'的ASCII值比'0'大1,'b'自增后变为'c',ASCII值为99,所以输出为'c'和50(99-48)。 23. 关系数据库中的关键字(Primary...

    计算机一级考试理论题资料.pdf

    21. 光盘(如 CD、DVD、蓝光光盘)中的数据不能直接被 CPU 存取,需要通过光驱读取。 22. 24 位真彩色能表示 2 的 24 次方种颜色,即约 16777216 种颜色。 23. 十六进制数 7777 转换成二进制数是 111100110000011...

Global site tag (gtag.js) - Google Analytics