栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java中输入流&输出流&字节数组&字符之间的转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java中输入流&输出流&字节数组&字符之间的转换

实现InputStream的任意拷贝
ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
byte[] buffer = new byte[1024];
int len;
while ((len = input.read(buffer)) > -1 ) {
    baos.write(buffer, 0, len);
}
baos.flush();
 
// 打开一个新的输入流
InputStream is1 = new ByteArrayInputStream(baos.toByteArray()); 
InputStream is2 = new ByteArrayInputStream(baos.toByteArray());
将输入流拷贝成字节数组或输出流
public class StreamUtils{ // 在Spring的包下, 可以直接使用
    // 把输入流读取成字符数组
    public static byte[] copyToByteArray(@Nullable InputStream in) throws IOException {
        if (in == null) {
            return new byte[0];
        }

        ByteArrayOutputStream out = new ByteArrayOutputStream(BUFFER_SIZE);
        copy(in, out);
        return out.toByteArray();
    }

    // 把输入流拷贝到输出流
    public static int copy(InputStream in, OutputStream out) throws IOException {
        Assert.notNull(in, "No InputStream specified");
        Assert.notNull(out, "No OutputStream specified");

        int byteCount = 0;
        byte[] buffer = new byte[BUFFER_SIZE];
        int bytesRead = -1;
        while ((bytesRead = in.read(buffer)) != -1) {
            out.write(buffer, 0, bytesRead);
            byteCount += bytesRead;
        }
        out.flush();
        return byteCount;
    }
    
    // 读取输入流成字符串
	public static String copyToString(@Nullable InputStream in, Charset charset) throws IOException {
		if (in == null) {
			return "";
		}

		StringBuilder out = new StringBuilder();
		InputStreamReader reader = new InputStreamReader(in, charset);
		char[] buffer = new char[BUFFER_SIZE];
		int bytesRead = -1;
		while ((bytesRead = reader.read(buffer)) != -1) {
			out.append(buffer, 0, bytesRead);
		}
		return out.toString();
	}
	
	// 把字符串(根据编码)写到输出流
	public static void copy(String in, Charset charset, OutputStream out) throws IOException {
		Assert.notNull(in, "No input String specified");
		Assert.notNull(charset, "No charset specified");
		Assert.notNull(out, "No OutputStream specified");
		Writer writer = new OutputStreamWriter(out, charset);
		writer.write(in);
		writer.flush();
	}
}

	
写数据转成字节数组或输入流
ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
Writer writer = new OutputStreamWriter(bos, StandardCharsets.UTF_8);

Map form = request.getParameterMap();
for (Iterator nameIterator = form.keySet().iterator(); nameIterator.hasNext();) {
    String name = nameIterator.next();
    List values = Arrays.asList(form.get(name));
    for (Iterator valueIterator = values.iterator(); valueIterator.hasNext();) {
        String value = valueIterator.next();
        writer.write(URLEncoder.encode(name, FORM_CHARSET.name()));
        if (value != null) {
            writer.write('=');
            writer.write(URLEncoder.encode(value, FORM_CHARSET.name()));
            if (valueIterator.hasNext()) {
                writer.write('&');
            }
        }
    }
    if (nameIterator.hasNext()) {
        writer.append('&');
    }
}
writer.flush();

return new ByteArrayInputStream(bos.toByteArray());
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489942.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号