我编写了一个利用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);
}
}
分享到:
相关推荐
一台机器可能有不止一个CD-ROM驱动器。现在CD-ROM已经是PC机的标准配置,此外再装个可擦写的光盘驱动,甚至是DVD都是很常见的事情。不管一台机器上装多少个不同的驱动器,如何找到它们呢?请用下程序
非常实用的读取配置文件的小工具,专门读取WEB-INF下文件夹中的properties文件,代码简洁、亲测没有问题,适用范围广,任何类中都可调用,传入Key及可得到Value
NULL 博文链接:https://baobeituping.iteye.com/blog/1280825
大家都喜欢把配置文件放在src目录下,如果有10个以上的配置文件为什么不考虑在WEB-INF目录下新建一个文件夹,专门放配置文件;这样即好管理,文件安全性又高。亲问题已经解决,把源代码共享给大家,已经通过测试;...
Java解决UTF-8的BOM问题,使用“UnicodeInputStream”、“UnicodeReader”。
挺好用的
VC++ CDPlayer CD_ROM,完整的VC++程序,能用。
用Java读取ASCII形式的STL文件,结合JOpengl进行显示即可。
java 创建txt_JAVA读取TXT文件、新建TXT文件、写入TXT文件
java中读取目录下指定的文件
用WC3的DOM实现对XML文件的读取。 方法摘要: //通过文件路径及文件名读取xml public XMLReader(String path, String filename); //初始化读取包下的的XML文件 public XMLReader(Package package1, String fileName)...
虚拟光驱 免安装 iso文件直接播放 堪称 迷你型虚拟光驱
java读取文件方法大全 读取file流等技术
java读取WEB-INFO下的配置文件,读取src下的配置文件,junit读取WEB-INFO下的配置文件
java读取TXT文件入库,java读取TXT文件入库,java读取TXT文件入库,
java-读取-excel-2003-或-excel-2007.doc
java读取局域网共享机器文件 java读取局域网共享机器文件
java 读取PDF文件中的内容 java 读取PDF文件中的内容
赠送Maven依赖信息文件:lz4-java-1.4.0.pom; 包含翻译后的API文档:lz4-java-1.4.0-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.lz4:lz4-java:1.4.0; 标签:java、lz4、jar包、java、中文文档; 使用方法...
赠送Maven依赖信息文件:lz4-java-1.4.1.pom; 包含翻译后的API文档:lz4-java-1.4.1-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.lz4:lz4-java:1.4.1; 标签:lz4、java、中文文档、jar包; 使用方法:解压...