public static void main(String[] args) throws IOException { FileInputStream fin = new FileInputStream(args[0]); GZIPInputStream gzin = new GZIPInputStream(fin); ReadableByteChannel in = Channels.newChannel(gzin); WritableByteChannel out = Channels.newChannel(System.out); ByteBuffer buffer = ByteBuffer.allocate(65536); while (in.read(buffer) != -1) { buffer.flip(); out.write(buffer); buffer.clear(); } }
private static WAVData readFromStream(AudioInputStream aIn) throws UnsupportedAudioFileException, IOException { ReadableByteChannel aChannel = Channels.newChannel(aIn); AudioFormat fmt = aIn.getFormat(); int numChannels = fmt.getChannels(); int bits = fmt.getSampleSizeInBits(); int format = AL_FORMAT_MONO8; if ((bits == 8) && (numChannels == 1)) { format = AL_FORMAT_MONO8; } else if ((bits == 16) && (numChannels == 1)) { format = AL_FORMAT_MONO16; } else if ((bits == 8) && (numChannels == 2)) { format = AL_FORMAT_STEREO8; } else if ((bits == 16) && (numChannels == 2)) { format = AL_FORMAT_STEREO16; } int freq = Math.round(fmt.getSampleRate()); int size = aIn.available(); ByteBuffer buffer = ByteBuffer.allocateDirect(size); while (buffer.remaining() > 0) { aChannel.read(buffer); } buffer.rewind(); // Must byte swap on big endian platforms // Thanks to swpalmer on javagaming.org forums for hint at fix if ((bits == 16) && (ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN)) { int len = buffer.remaining(); for (int i = 0; i < len; i += 2) { byte a = buffer.get(i); byte b = buffer.get(i + 1); buffer.put(i, b); buffer.put(i + 1, a); } } WAVData result = new WAVData(buffer, format, size, freq, false); aIn.close(); return result; }
@Override public void run() { try { if (!picDirectory.exists()) picDirectory.mkdirs(); File csvPath = csvFile.getParentFile(); if ((csvPath != null) && !csvPath.exists()) csvPath.mkdirs(); PrintWriter csvWrite = new PrintWriter(csvFile); for (int i = 0; i < id.length; i++) { progressBar.setValue(i * 100 / id.length); csvWrite.print("'" + id[i] + "'"); Detail info = new Detail(frame.database, id[i]); for (int x = 0; x < 7; x++) for (int y = 0; y < 7; y++) { String data = info.get(List.COLUMN_NAME[x][y]); switch (List.COLUMN_TYPE[x][y]) { case 1: data = "'" + data + "'"; break; case 2: if (data == null) data = "null"; break; case 3: if (data == null) data = "0000-00-00"; data = "'" + data + "'"; break; case 4: data = "'" + data + "'"; } csvWrite.print("," + data); } csvWrite.println(); String picAddress = info.get("pic"); info.close(); if (picAddress.length() == 32) { ReadableByteChannel url = Channels.newChannel( new URL( "http://" + Configure.webserverAddress + "/" + Configure.picDirectory + picAddress.substring(0, picAddress.length() - 5) + "/" + picAddress.substring(picAddress.length() - 5) + ".jpg") .openStream()); FileOutputStream outStream = new FileOutputStream(picDirectory.getPath() + "/" + id[i] + ".jpg"); FileChannel out = outStream.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(10000); while (url.read(buffer) != -1) { buffer.flip(); out.write(buffer); buffer.clear(); } out.close(); outStream.close(); url.close(); } } csvWrite.close(); progressBar.setValue(100); finish(); } catch (Exception e) { JOptionPane.showMessageDialog(Port.this, "导出失败!", "错误", JOptionPane.ERROR_MESSAGE); dispose(); } }