添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
*/import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;import java.io.InputStream; import java.io.OutputStream; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel;public class WAVTest { private int headlength1 = 0; private int headlength2 = 0; /* * 16进制字节数组转换成int public static int byteArrayToInt(byte[] b) { return b[3] & 0xFF | (b[2] & 0xFF) << 8 | (b[1] & 0xFF) << 16 | (b[0] & 0xFF) << 24; } /** * int转换成16进制字节数组 public static byte[] intToByteArray(int a) { return new byte[] { (byte) ((a >> 24) & 0xFF), (byte) ((a >> 16) & 0xFF), (byte) ((a >> 8) & 0xFF), (byte) (a & 0xFF) }; } /** * 字节数组的转换 0x00 00 27 56在内存中的位置是56 27 00 00 所以要反过来 public static byte[] byteToByte(byte[] a) { if (a.length == 4) { byte[] b = new byte[4]; b[0] = a[3]; b[1] = a[2]; b[2] = a[1]; b[3] = a[0]; return b; return null; } /** * 将两个wav合成一个新的wav public void addWav(String filepath1, String filepath2, String filepath3) throws IOException { File file1 = new File(filepath1); System.out.println("1.wav:" + -file1.length()); File file2 = new File(filepath2); System.out.println("2.wav:" + file2.length()); File file3 = new File(filepath3); if (!file3.exists()) { file3.createNewFile(); InputStream is1 = new FileInputStream(file1); InputStream is2 = new FileInputStream(file2); OutputStream os = new FileOutputStream(file3);// 追加 byte[] tempbuffer = new byte[1024]; int nRed = 0; while ((nRed = is1.read(tempbuffer)) != -1)// 将1.wav全部内容复制到3.wav os.write(tempbuffer, 0, nRed); os.flush(); } is1.close(); is2.skip(44);// 跳过2.wav的文件头 while ((nRed = is2.read(tempbuffer)) != -1)// 将2.wav全部内容追加复制到3.wav结尾处 os.write(tempbuffer, 0, nRed); os.flush(); is2.close(); os.close(); // 到此完成了1.wav和2.wav合并成3.wav,但是此时播放3.wav,会发现大小虽然是1.wav和2.wav的和 // 但是音频内容仍然只是第一个音频的内容,所以还要更改3.wav的文件头 } * 更改addWav.wav.wav的文件头 public void updateFileHead(String filepath3, boolean ifUpdate) throws IOException { RandomAccessFile raf = new RandomAccessFile(filepath3, "rw"); long filelength = raf.length(); System.out.println(filepath3 + filelength); // 打开一个文件通道 FileChannel channel = raf.getChannel(); // 映射文件中的某一部分数据以读写模式到内存中 MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, 44);// 文件头长度 byte[] b = new byte[4]; b[0] = buffer.get(4); b[1] = buffer.get(5); b[2] = buffer.get(6); b[3] = buffer.get(7); int length1 = WAVTest.byteArrayToInt(WAVTest.byteToByte(b)); System.out.println(length1);// 显示data+44-8 byte[] b1 = new byte[4]; b1[0] = buffer.get(40); b1[1] = buffer.get(41); b1[2] = buffer.get(42); b1[3] = buffer.get(43); int length2 = WAVTest.byteArrayToInt(WAVTest.byteToByte(b1)); System.out.println(length2); if (ifUpdate)// 修改头部文件 byte[] head1 = this.byteToByte(this.intToByteArray(headlength1)); byte[] head2 = this.byteToByte(this.intToByteArray(headlength2)); // 进行修改操作 buffer.put(4, head1[0]); buffer.put(5, head1[1]); buffer.put(6, head1[2]); buffer.put(7, head1[3]); buffer.put(40, head2[0]); buffer.put(41, head2[1]); buffer.put(42, head2[2]); buffer.put(43, head2[3]); buffer.force();// 强制输出,在buffer中的改动生效到文件 System.out.println("文件头修改成功"); /**************************************** 进行查询,看修改是否生效 ***************/ b = new byte[4]; b[0] = buffer.get(4); b[1] = buffer.get(5); b[2] = buffer.get(6); b[3] = buffer.get(7); length1 = WAVTest.byteArrayToInt(WAVTest.byteToByte(b)); System.out.println(length1);// 显示data+44-8 b1 = new byte[4]; b1[0] = buffer.get(40); b1[1] = buffer.get(41); b1[2] = buffer.get(42); b1[3] = buffer.get(43); length2 = WAVTest.byteArrayToInt(WAVTest.byteToByte(b1)); System.out.println(length2); } else { this.headlength1 = this.headlength1 + length1; this.headlength2 = this.headlength2 + length2; } buffer.clear(); channel.close(); raf.close(); } public static void main(String[] args) throws IOException { String filepath1 = "C:\\Users\\Administrator\\Desktop\\audio\\5-son1.wav";// 源文件1.wav String filepath2 = "C:\\Users\\Administrator\\Desktop\\audio\\5-son.wav";// 源文件2.wav String filepath3 = "C:/Users/Administrator/Desktop/audio/son1-son.wav";// 合成文件addwav.wav WAVTest wavTest = new WAVTest(); wavTest.addWav(filepath1, filepath2, filepath3);// data合成 wavTest.updateFileHead(filepath1, false); wavTest.updateFileHead(filepath2, false); wavTest.updateFileHead(filepath3, true);//头部合成 }
mysql创建函数命令行 mysql 创建函数

1:创建函数的语句create function py_trim(str varchar(100)) returns varchar(100) begin declare x varchar(100); set x=ltrim(rtrim(str)); return x; end2:查看:所有函数存储在mysql数据库下的proc表中说明:存储过程与函数都存储在proc表中,区别在type字段,f