java 字符串保存成二进制文件

杀丶破狼 发布于 2015/12/08 16:04
阅读 1K+
收藏 0

有一个字符串,比如String s = "123abc你好";

现在需要将这个字符串保存成二进制文件。用UE编辑器打开看到的是 00 0A 3F 这样的数据。

有没有人写过,或者相关的文章(网上的文章看过,没找到能用的),谢谢

加载中
1
蕃薯哥哥
蕃薯哥哥
  1. FileOutputStream fos = new FileOutputStream(file);
  2. ObjectOutputStream oos = new ObjectOutputStream(fos);  
  3. oos.writeObject(obj);  
  4. oos.flush();  
  5. oos.close();  
  6. fos.close();

类似这样的操作.要用ObjectOutputStream进行序列化.

0
jayU
jayU
"".getBytes


ByteArrayInputStream



转流的话 再用这个

杀丶破狼
杀丶破狼
能详细点么?不太懂
0
jayU
jayU
InputStream is = new ByteArrayInputStream("str".getBytes(charset));

charset 是字符编码



0
杀丶破狼
杀丶破狼

引用来自“jayU”的评论

InputStream is = new ByteArrayInputStream("str".getBytes(charset));

charset 是字符编码



public static boolean writeFileByBinary(String filePath, String fileContent) {
		boolean flag = false;
		OutputStream out = null;
		if (StringUtils.isBlank(filePath)) {
			return flag;
		}
		try {
			File file = new File(filePath);
			if (!file.exists()) {
				flag = file.createNewFile();
			}
			if (flag = true) {
				out = new FileOutputStream(filePath);
				byte[] buf = fileContent.getBytes();
				out.write(buf);
				out.flush();
				out.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return flag;
	}


我是这样写的,但写到文件中不是二进制的,是哪里有问题么?



上兵伐谋
上兵伐谋
DataOutputStream 这个的writeByte
0
bug0day
bug0day

你只需要将byte转化成16进制字符串就好了

0
jayU
jayU

不好意思问题没看清楚

如果你是文本编辑器打开 看到是 16进制字符串

那么转16进制后保存就可以了

0
1
1505412718

文件肯定是2进制保存的,但是要在16进制模式下才能看出来,因为文本模式是经过解码后才显示出来的

如果想在文本模式看到16进制的数据,那么就要把byte转换成16进制ascii码再转成byte保存

out = new FileOutputStream(filePath);
                byte[] buf = fileContent.getBytes();

                StringBuffer sb = new StringBuffer();

                for (byte b : buf) {

                    sb.append(String.format("%02X ", b));

                }

                buf = sb.toString().getBytes();
                out.write(buf);
                out.flush();
                out.close();

返回顶部
顶部