@Override public byte[] toBytes(VR vr, boolean bigEndian) throws IOException { if (length == -1) throw new UnsupportedOperationException(); if (length == 0) return ByteUtils.EMPTY_BYTES; InputStream in = openStream(); try { byte[] b = new byte[length]; StreamUtils.readFully(in, b, 0, b.length); if (this.bigEndian != bigEndian) { vr.toggleEndian(b, false); } return b; } finally { in.close(); } }
private void saveAudioFile(DicomSpecialElement media) { AudioData audioData = getAudioData(media); if (audioData != null) { JFileChooser fileChooser = new JFileChooser(); fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); fileChooser.setAcceptAllFileFilterUsed(false); FileFormatFilter filter = new FileFormatFilter("au", "AU"); //$NON-NLS-1$ //$NON-NLS-2$ fileChooser.addChoosableFileFilter(filter); fileChooser.addChoosableFileFilter(new FileFormatFilter("wav", "WAVE")); //$NON-NLS-1$ //$NON-NLS-2$ fileChooser.setFileFilter(filter); if (fileChooser.showSaveDialog(null) == JFileChooser.APPROVE_OPTION) { if (fileChooser.getSelectedFile() != null) { File file = fileChooser.getSelectedFile(); filter = (FileFormatFilter) fileChooser.getFileFilter(); String extension = filter == null ? ".au" : "." + filter.getDefaultExtension(); //$NON-NLS-1$ //$NON-NLS-2$ String filename = file.getName().endsWith(extension) ? file.getPath() : file.getPath() + extension; try (AudioInputStream audioStream = new AudioInputStream(audioData.bulkData.openStream(), audioData.audioFormat, audioData.bulkData.length() / audioData.audioFormat.getFrameSize())) { if (".wav".equals(extension)) { //$NON-NLS-1$ AudioSystem.write(audioStream, AudioFileFormat.Type.WAVE, new File(filename)); } else { AudioSystem.write(audioStream, AudioFileFormat.Type.AU, new File(filename)); } } catch (IOException ex) { LOGGER.error("Cannot save audio file!", ex); //$NON-NLS-1$ } } } } }
@Override public void writeTo(DicomOutputStream out, VR vr) throws IOException { InputStream in = openStream(); try { if (this.bigEndian != out.isBigEndian()) StreamUtils.copy(in, out, length, vr.numEndianBytes()); else StreamUtils.copy(in, out, length); if ((length & 1) != 0) out.write(vr.paddingByte()); } finally { in.close(); } }
try (AudioInputStream audioStream = new AudioInputStream(audioData.bulkData.openStream(), audioData.audioFormat, audioData.bulkData.length() / audioData.audioFormat.getFrameSize())) { DataLine.Info info = new DataLine.Info(Clip.class, audioStream.getFormat());