java 如何将二进制数据流转换成字符串并保存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何将二进制数据流转换成字符串并保存相关的知识,希望对你有一定的参考价值。

参考技术A private static String bytesToString(String filename)
String myreadline = "";
try
// 创建FileReader对象,用来读取字符流
FileReader fr = new FileReader("userinfo.txt");
// 缓冲指定文件的输入
BufferedReader br = new BufferedReader(fr);
// 定义一个String类型的变量,用来每次读取一行

while (br.ready())
// 读取一行
myreadline = myreadline + (myreadline.equals("")?"":"\n") + br.readLine();

// 在屏幕上输出
System.out.println(myreadline);

br.close();
fr.close();

catch (IOException e)
e.printStackTrace();

return myreadline;


public static void writerFile(String fileString, String filePath)
FileWriter fw;
try
fw = new FileWriter(filePath);
// 将缓冲对文件的输出
BufferedWriter bw = new BufferedWriter(fw);
bw.write(fileString);
bw.flush();
bw.close();
fw.close();
catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();



public static void main(String[] args) throws FileNotFoundException,
Exception
// TODO Auto-generated method stub
String fileString = bytesToString("D:/workspace/TestStruts2/userinfo.txt");
writerFile(fileString,"D:/workspace/TestStruts2/test.txt");

将二进制流转换成图片文件

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
 
/**
 * 将二进制流转换成图片文件
 * 
 *
 */
 
public class ImgErToFileUtil {
     
    /**
     * 将接收的字符串转换成图片保存
     * @param imgStr 二进制流转换的字符串
     * @param imgPath 图片的保存路径
     * @param imgName 图片的名称
     * @return
     *      1:保存正常
     *      0:保存失败
     */
    public static int saveToImgByStr(String imgStr,String imgPath,String imgName){
try {
    System.out.println("===imgStr.length()====>" + imgStr.length()
            + "=====imgStr=====>" + imgStr);
} catch (Exception e) {
    e.printStackTrace();
}
        int stateInt = 1;
        if(imgStr != null && imgStr.length() > 0){
            try {
                 
                // 将字符串转换成二进制,用于显示图片 
                // 将上面生成的图片格式字符串 imgStr,还原成图片显示 
                byte[] imgByte = hex2byte( imgStr ); 
     
                InputStream in = new ByteArrayInputStream(imgByte);
     
                File file=new File(imgPath,imgName);//可以是任何图片格式.jpg,.png等
                FileOutputStream fos=new FileOutputStream(file);
                   
                byte[] b = new byte[1024];
                int nRead = 0;
                while ((nRead = in.read(b)) != -1) {
                    fos.write(b, 0, nRead);
                }
                fos.flush();
                fos.close();
                in.close();
     
            } catch (Exception e) {
                stateInt = 0;
                e.printStackTrace();
            } finally {
            }
        }
        return stateInt;
    }
     
    /**
     * 将二进制转换成图片保存
     * @param imgStr 二进制流转换的字符串
     * @param imgPath 图片的保存路径
     * @param imgName 图片的名称
     * @return
     *      1:保存正常
     *      0:保存失败
     */
    public static int saveToImgByBytes(File imgFile,String imgPath,String imgName){
 
        int stateInt = 1;
        if(imgFile.length() > 0){
            try {
                File file=new File(imgPath,imgName);//可以是任何图片格式.jpg,.png等
                FileOutputStream fos=new FileOutputStream(file);
                 
                FileInputStream fis = new FileInputStream(imgFile);
                   
                byte[] b = new byte[1024];
                int nRead = 0;
                while ((nRead = fis.read(b)) != -1) {
                    fos.write(b, 0, nRead);
                }
                fos.flush();
                fos.close();
                fis.close();
     
            } catch (Exception e) {
                stateInt = 0;
                e.printStackTrace();
            } finally {
            }
        }
        return stateInt;
    }
 
    /**
     * 二进制转字符串
     * @param b
     * @return
     */
    public static String byte2hex(byte[] b) // 二进制转字符串
    {
        StringBuffer sb = new StringBuffer();
        String stmp = "";
        for (int n = 0; n < b.length; n++) {
            stmp = Integer.toHexString(b[n] & 0XFF);
            if (stmp.length() == 1) {
                sb.append("0" + stmp);
            } else {
                sb.append(stmp);
            }
 
        }
        return sb.toString();
    }
 
    /**
     * 字符串转二进制
     * @param str 要转换的字符串
     * @return  转换后的二进制数组
     */
    public static byte[] hex2byte(String str) { // 字符串转二进制
        if (str == null)
            return null;
        str = str.trim();
        int len = str.length();
        if (len == 0 || len % 2 == 1)
            return null;
        byte[] b = new byte[len / 2];
        try {
            for (int i = 0; i < str.length(); i += 2) {
                b[i / 2] = (byte) Integer
                        .decode("0X" + str.substring(i, i + 2)).intValue();
            }
            return b;
        } catch (Exception e) {
            return null;
        }
    }
     
}

来源:转载

 

以上是关于java 如何将二进制数据流转换成字符串并保存的主要内容,如果未能解决你的问题,请参考以下文章

JAVA Socket TCP InputStream输入流转换成可读的数据如何做?

c# 图片转二进制流

JAVA怎么把数据流转换成对象

在java里面 把 文件转换成二进制流 然后在.net里面 再把二进制流转化成文件.......

文件转换成二进制流及二进制流转换成文件

二进制图片如何转化为值