栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

读写DVD / CD-Java

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

读写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 systemString 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 emptyint 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生成的类,因为生成器做得并不完美:

public abstract class ClassFactoryExt {    private ClassFactoryExt() {} // instanciation is not allowed        public static com.ms.imapi2.IDiscFormat2DataExt createMsftDiscFormat2Data() {        return COM4J.createInstance( com.ms.imapi2.IDiscFormat2DataExt.class, "{2735412A-7F64-5B0F-8F00-5D77AFBE261E}" );    }}@IID("{27354153-9F64-5B0F-8F00-5D77AFBE261E}")public interface IDiscFormat2DataExt extends com.ms.imapi2.IDiscFormat2Data {        @VTID(18)    //com.ms.imapi2.IMAPI_FORMAT2_DATA_MEDIA_STATE currentMediaStatus();    int currentMediaStatusExt();}public abstract class StreamClassFactory {    private StreamClassFactory() {} // instanciation is not allowed        public static com.ms.imapi2.IBootOptions createBootOptions() {        return COM4J.createInstance( com.ms.imapi2.IBootOptions.class, "{2C941FCE-975B-59BE-A960-9A2A262853A5}" );    }        public static com.ms.imapi2.IFileSystemImage3 createMsftFileSystemImage() {        return COM4J.createInstance( com.ms.imapi2.IFileSystemImage3.class, "{2C941FC5-975B-59BE-A960-9A2A262853A5}" );    }        public static com.ms.imapi2.IIsoImageManager createMsftIsoImageManager() {        return COM4J.createInstance( com.ms.imapi2.IIsoImageManager.class, "{CEEE3B62-8F56-4056-869B-EF16917E3EFC}" );    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569645.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号