【转】Java 数据流转换工具类

 

转自:OPEN开发经验库    http://www.open-open.com/lib/view/open1355237678320.html

 

import java.io.ByteArrayOutputStream;
import java.io.InputStream;

/**
 * @ClassName: StreamUtil
 * @Description: 数据流转换工具类
 * @author 
 * @company 
 * @date 2012-12-13
 * @version V1.0
 */

public final class StreamUtil {

	private StreamUtil() {
	}

	/**
	 * @Title: readStreadToByte
	 * @Description: 从输入流中获取数据
	 * @param inStream
	 *            输入流
	 * @return byte[]
	 * @throws Exception
	 * @author 
	 * @date 2012-12-13
	 */
	public static byte[] readStreadToByte(InputStream inStream)
			throws Exception {

		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		byte[] buf = new byte[1024];
		int len = 0;
		while ((len = inStream.read(buf)) != -1) {

			outStream.write(buf, 0, len);
		}

		byte[] result = outStream.toByteArray();

		outStream.close();
		inStream.close();

		return result;
	}

	/**
	 * @Title: readStreamToString
	 * @Description: 从输入流中获取数据
	 * @param inStream
	 *            输入流
	 * @return String
	 * @throws Exception
	 * @author 
	 * @date 2012-12-13
	 */
	public static String readStreamToString(InputStream inStream)
			throws Exception {

		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		byte[] buf = new byte[1024];
		int len = 0;
		while ((len = inStream.read(buf)) != -1) {

			outStream.write(buf, 0, len);
		}

		String result = outStream.toString();

		outStream.close();
		inStream.close();

		return result;
	}

	/**
	 * @Title: readStreamToString
	 * @Description: 将输入流转化成某字符编码的String
	 * @param inStream
	 *            输入流
	 * @param encoding
	 *            编码
	 * @return String
	 * @throws Exception
	 * @author 
	 * @date 2012-12-13
	 */
	public static String readStreamToString(InputStream inStream,
			String encoding) throws Exception {

		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		byte[] buf = new byte[1024];
		int len = 0;
		while ((len = inStream.read(buf)) != -1) {

			outStream.write(buf, 0, len);
		}

		String result = new String(outStream.toByteArray(), encoding);

		outStream.close();
		inStream.close();

		return result;
	}
}
 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java中的javax.sound.sampled包中的AudioSystem类和AudioInputStream类来实现PCMA、PCMU格式数据转换成PCM格式数据的工具类。具体实现步骤如下: 1. 读取输入的PCMA、PCMU格式数据,可以使用Java中的FileInputStream类或者ByteArrayInputStream类来读取。 2. 创建AudioInputStream对象,将输入的PCMA、PCMU格式数据转换成AudioInputStream,同时指定AudioFormat参数。 3. 调用AudioSystem.getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream)方法将AudioInputStream转换成PCM格式的AudioInputStream。 4. 将PCM格式的AudioInputStream转换成byte[]数组,可以使用ByteArrayOutputStream类或者DataInputStream类来实现。 下面是一个简单的PCMA、PCMU格式数据转换成PCM格式数据的工具类的实现代码: ```java import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; public class PCMConverter { public static byte[] convertToPCM(byte[] audioData, AudioFormat audioFormat) throws Exception { // 创建输入 InputStream inputStream = new ByteArrayInputStream(audioData); // 创建AudioInputStream对象 AudioInputStream audioInputStream = new AudioInputStream(inputStream, audioFormat, audioData.length / audioFormat.getFrameSize()); // 指定目标AudioFormat参数 AudioFormat targetAudioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED, audioFormat.getSampleRate(), 16, audioFormat.getChannels(), audioFormat.getChannels() * 2, audioFormat.getSampleRate(), false); // 转换成PCM格式的AudioInputStream AudioInputStream pcmAudioInputStream = AudioSystem.getAudioInputStream(targetAudioFormat, audioInputStream); // 将PCM格式的AudioInputStream转换成byte[]数组 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[8192]; int count; while ((count = pcmAudioInputStream.read(buffer, 0, buffer.length)) != -1) { byteArrayOutputStream.write(buffer, 0, count); } byte[] pcmData = byteArrayOutputStream.toByteArray(); // 关闭 pcmAudioInputStream.close(); audioInputStream.close(); inputStream.close(); byteArrayOutputStream.close(); return pcmData; } } ``` 使用方法如下: ```java // 读取PCMA、PCMU格式数据到byte[]数组 byte[] audioData = readAudioDataFromFile("audio.pcmu"); // 创建AudioFormat对象 AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.ULAW, 8000, 8, 1, 1, 8000, false); // 将PCMA、PCMU格式数据转换成PCM格式数据 byte[] pcmData = PCMConverter.convertToPCM(audioData, audioFormat); // 将PCM格式数据写入文件 writeAudioDataToFile(pcmData, "audio.pcm"); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值