⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdrecordcontroller.java

📁 基于Java技术实现的minipacs系统,可以进行诊断信息登记, 嵌入控件查看DICOM 影像和统计分析等功能.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * ScanBus.java * * Created on 26. oktober 2005, 15:04 * * To change this template, choose Tools | Options and locate the template under * the Source Creation and Management node. Right-click the template and choose * Open. You can then make changes to the template in the Source Editor. */package burningtools; import java.lang.*;import java.io.*;import java.util.*;/** * * @author Thomas */public class CdRecordController {    private static CdRecordController currentController = new CdRecordController();    private Vector<CDRecordListener> cdRecordListeners = new Vector<CDRecordListener>();    /**     * METHOD - Making CdRecordController static     */        public static CdRecordController getCdRecord() { 	return currentController;    }        /**     * METHOD - Add a CDRecordListener to the object variabel vector     */        public void addListener(CDRecordListener cdRecordListener) { 	this.cdRecordListeners.addElement(cdRecordListener);    }        public void fireBurnProcessUpdate(int burnPercentage, int burnTime, String burnMessage) {        for(CDRecordListener l : cdRecordListeners) {            l.burnProgressUpdated(burnPercentage, burnTime, burnMessage);        }    }            /**     * METHOD - Scanning machine for drivers, using scsibus (Windows)     */    public Vector<Device> scanBus() {        // TODO: Test for ATAPI-drive. Return atapi = true if drive is ATAPI        boolean atapi = false; //ATAPI is always false on Windows        return this.scanBus(atapi);    }    // METHOD - Scanning machine for drivers, using atapi    public Vector<Device> scanBus(boolean atapi) {        Vector<Device> deviceVector = new Vector<Device>();        ArrayList<String> scsiDevice = new ArrayList<String>();                try{            String addString = "";            if (atapi == true) {                addString = "dev=ATAPI ";                      }            String launchString = "cdrecord " + addString + "-scanbus";            //System.out.println(launchString);            Process scanBusProcess = Runtime.getRuntime().exec(launchString);            InputStream scanBusStream = scanBusProcess.getInputStream();            InputStreamReader scanBusStreamReader = new InputStreamReader(scanBusStream);            BufferedReader scanBusBuffer = new BufferedReader(scanBusStreamReader);                        String bufferLine = scanBusBuffer.readLine();            while (bufferLine != null) {                if ((bufferLine.startsWith("\t")) && !((bufferLine.contains("*")) || (bufferLine.contains("HOST ADAPTOR")))){                    scsiDevice.add(bufferLine.substring(1, 6));                }                bufferLine = scanBusBuffer.readLine();            }            scanBusProcess.destroy();        }        catch(Exception e){            System.out.println("Something went wrong!");            e.printStackTrace();        }        if (scsiDevice.isEmpty()) {            System.out.println("No device was found!");        }        else {            int numberOfDevices = scsiDevice.size();            for (int i=0; i<numberOfDevices; i++) {                String dev = scsiDevice.get(i);                String[] devProberties = dev.split(",");                int scsibus = Integer.parseInt(devProberties[0]);                int target = Integer.parseInt(devProberties[1]);                int lun = Integer.parseInt(devProberties[2]);                System.out.println("ScsiBus: " + scsibus + "  Target: " + target + "  Lun: " + lun);                deviceVector.addElement(new Device(scsibus, target, lun, atapi));            }        }        return deviceVector;    }        /**     * METHOD - Find out if there is a blank medium loadet in the chosen drive     */    public Medium getMedium(Device device) {        boolean atapi = device.getAtapi();        int scsibus = device.getScsibus();        int target = device.getTarget();        int lun = device.getLun();        boolean mediumLoadet = true;        boolean mediumBlank = true;                    try{            String addString = "";            if (atapi == true) {                addString = "ATAPI:";                      }            String shellCommand = "cdrecord dev=" + addString + scsibus + "," + target  + "," + lun + " -toc";            Process cdrecordProcess = Runtime.getRuntime().exec(shellCommand);            // Get inputstream            InputStream cdrecordStream = cdrecordProcess.getInputStream();            InputStreamReader cdrecordStreamReader = new InputStreamReader(cdrecordStream);            BufferedReader cdrecordBuffer = new BufferedReader(cdrecordStreamReader);            // Reading ErrorStream            InputStream errorStream = cdrecordProcess.getErrorStream();            InputStreamReader errorStreamReader = new InputStreamReader(errorStream);            BufferedReader errorBuffer = new BufferedReader(errorStreamReader);                        String bufferLine = "";            while (bufferLine != null) {                if(bufferLine.startsWith("first")) {                    mediumBlank = false;                }                if(bufferLine.endsWith("Try to load media by hand.")) {                    mediumLoadet = false;                }                if (errorBuffer.ready()) {                    bufferLine = errorBuffer.readLine();                    System.out.println("ERROR: " + bufferLine);                }                else {                    bufferLine = cdrecordBuffer.readLine();                    System.out.println(bufferLine);                }                            }            // Destroying process            cdrecordProcess.destroy();        }        catch(Exception e){            System.out.println("Something went wrong!");            e.printStackTrace();        }                if (mediumLoadet) {            Medium medium = new Medium(mediumBlank);            getMediumInfo(device, medium);            return medium;        }        else {            return null;        }    }        /**     * METHOD - Find out information of loadet medium     */    private void getMediumInfo(Device device, Medium medium) {        boolean atapi = device.getAtapi();        int scsibus = device.getScsibus();        int target = device.getTarget();        int lun = device.getLun();        boolean mediumIsCD = false;        boolean mediumIsDVD = false;        int mediumCapasity = 0;                    try{            String addString = "";            if (atapi == true) {                addString = "ATAPI:";                      }            String shellCommand = "cdrecord dev=" + addString + scsibus + "," + target  + "," + lun + " -atip";            Process cdrecordProcess = Runtime.getRuntime().exec(shellCommand);            // Get inputstream            InputStream cdrecordStream = cdrecordProcess.getInputStream();            InputStreamReader cdrecordStreamReader = new InputStreamReader(cdrecordStream);            BufferedReader cdrecordBuffer = new BufferedReader(cdrecordStreamReader);            // Reading ErrorStream            InputStream errorStream = cdrecordProcess.getErrorStream();            InputStreamReader errorStreamReader = new InputStreamReader(errorStream);            BufferedReader errorBuffer = new BufferedReader(errorStreamReader);                        String bufferLine = cdrecordBuffer.readLine();            while (bufferLine != null) {                if(bufferLine.contains("ATIP start of lead out:")) {                    mediumIsCD = true;                    String[] temp = bufferLine.split(":");                    String larstPart = temp[1].trim();                    String[] kim = larstPart.split(" ");                    String mediumCapasityStr = kim[0];                    String mediumCapasityStrTrim = mediumCapasityStr.trim();                    int mediumClusters = Integer.valueOf(mediumCapasityStrTrim);                    mediumCapasity = (int)((double)mediumClusters/512.0);                }                bufferLine = cdrecordBuffer.readLine();            }                        String errorLine = errorBuffer.readLine();            while (errorLine != null) {                if(errorLine.contains("Found DVD media")) {                    mediumIsDVD = true;                    mediumCapasity = 4490;                }                errorLine = errorBuffer.readLine();            }            // Destroying process

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -