当前位置: 首页 > 面试题库 >

读写DVD / CD-Java

马德宇
2023-03-14
问题内容

关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。

想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。

7年前关闭。

改善这个问题

我正在开发一个名为LMCT(Let Me Copy That)的应用程序,它是用Java编程的,我只需要知道如何从Java刻录到DVD / CD。

任何示例,欢迎使用API​​或链接。


问题答案:

我已经使用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}" );
    }
}


 类似资料:
  • AmoK CD/DVD Burning小巧的光盘CD DVD刻录软件 +支持CD-R / CD-RW / DVD+R / DVD+RW / DVD-R / DVD-RW / DVD-RAM / DVD+DL 更多特性: + Burns CDs and DVDs + Supports all available standards: CD-R / CD-RW / DVD+R / DVD+RW / D

  • 本文向大家介绍CD和DVD之间的区别,包括了CD和DVD之间的区别的使用技巧和注意事项,需要的朋友参考一下 CD和DVD都是高清晰度的高存储设备。 以下是CD和DVD之间的重要区别。 序号 键 光盘 DVD 1 定义 CD代表光盘。 DVD代表数字多功能磁盘。 2 尺寸 CD大小为700 MB。 DVD大小从4.7 GB到17 GB不等。 3 记录层 记录层或金属层靠近磁盘顶部。 记录层或金属层靠

  • 如果你有一些视频文件,想把它们制作成一张可以在DVD机上播放的光盘,可以试一试.DVD Flick免费开源,使用ffmpeg作为引擎,支持的主要文件包括:AVI、MPG、MOV、WMV、ASF、FLV、MP4、…支持的主要编码包 括:、MPEG-1\2\4(XVid, DivX等) 、Windows Media视频音频、MP3、OGG Vorbis、H264 更多的屏幕截图请看:http://ww

  • Bombono DVD 是一个简单易用的用来制作 DVD 视频光盘的软件。支持章节、定制菜单的编辑等。 更多该软件的屏幕截图请看这里。

  • 'Q' DVD-Author是一款基于dvdauthor,采用Qt开发的DVD制作工具,该工具提供了完备而强大的DVD制作方案。其音频后端采用mplayer或者xine引擎。 该软件的优秀特性包括: 支持制作主菜单及子菜单 支持生成按钮控件 可调控各种控件属性 多音轨支持 dvd-slideshow支持 支持创建电影菜单、按钮等 更多屏幕截图请看:http://qdvdauthor.sourcef

  • Lightning-cd 是一个可以快速帮你找到并打开文件的工具,它可以作为 autojump(https://github.com/wting/autojump) 的一个补充。