java imapi_读写DVD / CD-Java
小编典典
我已经使用COM4J和IMAPI(仅适用于Windows)完成了此操作。
此示例代码使用系统中的第一个CD记录设备刻录ISO文件:
File isoFile = new File("myimage.iso");
IDiscMaster2 dm = ClassFactory.createMsftDiscMaster2();
int count = dm.count();
//Pick the first recorder on the system
String recorderUniqueId = null;
for (int i = 0; i < count; i++)
{
String cur = dm.item(i);
recorderUniqueId = cur;
}
IDiscRecorder2 recorder = ClassFactory.createMsftDiscRecorder2();
recorder.initializeDiscRecorder(recorderUniqueId);
System.out.println("Using recorder: " + recorder.vendorId() + " " + recorder.productId());
IIsoImageManager imageManager = StreamClassFactory.createMsftIsoImageManager();
imageManager.setPath(isoFile.getAbsolutePath());
imageManager.validate();
System.out.println("ISO Validation successful: " + isoFile.getAbsolutePath());
IDiscFormat2DataExt discData = ClassFactoryExt.createMsftDiscFormat2Data();
discData.recorder(recorder);
discData.clientName(IsoMan.class.getSimpleName());
int mediaStatus = discData.currentMediaStatusExt();
System.out.println("Media status: " + mediaStatus);
if ((mediaStatus & IMAPI_FORMAT2_DATA_MEDIA_STATE.IMAPI_FORMAT2_DATA_MEDIA_STATE_WRITE_PROTECTED.comEnumValue()) != 0)
throw new RuntimeException("Media is write protected / not empty.");
//Check if disc is empty
int addr = discData.nextWritableAddress();
if (addr != 0)
throw new RuntimeException("Disc is not empty, not writing.");
IStream isoStream = imageManager.stream();
System.out.println("Writing CD");
discData.write(isoStream);
System.out.println("Finished writing");
我不得不补充COM4J生成的类,因为生成器做得并不完美:
/**
* Defines methods to create COM objects
*/
public abstract class ClassFactoryExt {
private ClassFactoryExt() {} // instanciation is not allowed
/**
* Microsoft IMAPIv2 Data Writer
*/
public static com.ms.imapi2.IDiscFormat2DataExt createMsftDiscFormat2Data() {
return COM4J.createInstance( com.ms.imapi2.IDiscFormat2DataExt.class, "{2735412A-7F64-5B0F-8F00-5D77AFBE261E}" );
}
}
/**
* Data Writer
*/
@IID("{27354153-9F64-5B0F-8F00-5D77AFBE261E}")
public interface IDiscFormat2DataExt extends com.ms.imapi2.IDiscFormat2Data {
/**
* The state (usability) of the current media
*/
@VTID(18)
//com.ms.imapi2.IMAPI_FORMAT2_DATA_MEDIA_STATE currentMediaStatus();
int currentMediaStatusExt();
}
/**
* Defines methods to create COM objects
*/
public abstract class StreamClassFactory {
private StreamClassFactory() {} // instanciation is not allowed
/**
* Boot options
*/
public static com.ms.imapi2.IBootOptions createBootOptions() {
return COM4J.createInstance( com.ms.imapi2.IBootOptions.class, "{2C941FCE-975B-59BE-A960-9A2A262853A5}" );
}
/**
* File system image
*/
public static com.ms.imapi2.IFileSystemImage3 createMsftFileSystemImage() {
return COM4J.createInstance( com.ms.imapi2.IFileSystemImage3.class, "{2C941FC5-975B-59BE-A960-9A2A262853A5}" );
}
/**
* Microsoft IMAPIv2 Iso Image Manager
*/
public static com.ms.imapi2.IIsoImageManager createMsftIsoImageManager() {
return COM4J.createInstance( com.ms.imapi2.IIsoImageManager.class, "{CEEE3B62-8F56-4056-869B-EF16917E3EFC}" );
}
}
2020-10-12
java imapi_读写DVD / CD-Java相关推荐
- Linux java集成安装环境,Linux下Java环境安装
本节主要讲解Linux(Centos 6.5)下Java环境的安装 1. 卸载机器上默认安装的JDK 在Linux环境下一般会默认安装jdk,为了自己项目的开发部署,一般情况要重新装jdk,而且自己装 ...
- centos7 java 配置_centos7下安装java及环境变量配置技巧
现在我们常见的一些关于Linux的系统很多,但是使用的更多的一般都是CentOS和Ubuntu,今天我就来记录一下关于centos下java的安装和环境变量的配置,感兴趣的朋友跟随IIS7站长之家小编 ...
- JAVA之迷你DVD管理器
1.JAVA之迷你DVD管理器. 1>打开记事本,写如下一段代码: import java.text.ParseException; import java.text.SimpleDateFor ...
- java如何读写json文件
java如何读写json文件 在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是 ...
- c++解析csv 存入数组_使用Apache Commons CSV在Java中读写CSV
介绍 这是专门针对Java读写CSV的库的简短系列文章的第二篇,也是上一篇文章" Core Java读写CSV"的直接续篇. Apache Commons CSV 在Apache的 ...
- java怎样读txt文件_【后端开辟】java怎样读写txt文件?
java怎样读取txt文件? 1.运用FileInputStream完成读取txt文件内容 2.运用FileOutputStream完成写入txt文件内容 package cn.xiaobing.ut ...
- java 顺序 读写 Properties 配置文件 支持中文 不乱码
java 顺序 读写 Properties 配置文件 ,java默认提供的Properties API 继承hashmap ,不是顺序读写的. 特从网上查资料,顺序读写的代码,如下, import j ...
- 编写线程安全的Java缓存读写机制 (原创)
一种习以为常的缓存写法: IF value in cached THENreturn value from cache ELSEcompute valuesave value in cacheretu ...
- 写缓存java,编写线程安全的Java缓存读写机制 (原创)
一种习以为常的缓存写法: IF value in cached THEN return value from cache ELSE compute value save value in cache ...
最新文章
- PowerDesigner生成数据库
- 如何实现立体的DataGrid和具有Windows效果的图片按钮
- 会员管理scrm系统精细化运营更好促进成交
- GAN完整理论推导与实现,Perfect!
- 如何看待亚马逊 AI 李沐团队大批人员离职?
- 形状变化html,图形变换的三种方式是什么?
- android 默认打开服务器地址,Android开发实现任意切换服务器地址
- java 异常处理发生异常_处理Java中的异常
- 11个实用jQuery日历插件
- 关于Delphi XE2的FMX的一点点研究之消息篇
- 最大连续子数组和 动态规划_53. 最大子序和(动态规划)
- 频段、信道带宽、EARFCN、频段和EARFCN之间的换算
- 使用python爬取文库文档
- 优化器TORCH.OPTIM
- python爬虫实践-腾讯视频弹幕分析
- 路由器显示DNS服务器异常,路由器dns异常怎么办
- Python初学笔记1-【循环语句】
- 用 8550 和 ULN2003 驱动小型直流电机正反转
- 向量法计算多边形面积
- Odoo tree视图使用js添加按钮(以及跳转页面)