java二进制缓存
① java中二进制流的概念
字符流是为字符设计的,对字节流进行包装
因为一个字符有可能占用多个字节的
例如UTF-8编码下,对中文汉字的长度是变长的(2-4个字节),各种编码长度都不一样
那如果你用字节流读取的话,那你还要去一个个的转换,这中间就很多问题了
因此就有了字符流,帮你完成了一系列的字节转换...
纯手工的,请~~哈.
② java的数字二进制输出
要是我肯定先尝试一下,二进制以B开头,那就b代表下看咯,不行再去查。
事实也证明是不行的,查了一下,还真没有二进制的输出形式。
Integer 类倒是有相应的方法:
static StringtoBinaryString(int i)
以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
System.out.print(Integer.toBinaryString(x));
③ java实现解析二进制文件
/**
*
*/
package com.igen.case10;
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.net.URISyntaxException;
/**
*
* @ClassName Case10
* @Description TODO
*
* @author wjggwm
* @data 2017年2月7日 上午11:46:25
*/
public class Case10 {
static final String fileName = "/test.png";
static final String filePath = "D:/files/case10";
static final String sourceFileName = "binary";
public static void main(String[] args) {
try {
readFile(Case10.class.getResource(sourceFileName).toURI().getPath());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
/**
*
* @Description 解析二进制文件
* @param sourceFileName
*
* @author wjggwm
* @data 2017年2月7日 上午11:47:12
*/
public static void readFile(String sourceFileName) {
InputStream in = null;
try {
in = new FileInputStream(sourceFileName);
// 读取字符串数据长度字节
byte[] txtLenByte = new byte[2];
in.read(txtLenByte);
int txtlen = byte2ToUnsignedShort(txtLenByte, 0);
// 读取字符串字节
byte[] txtByte = new byte[txtlen];
in.read(txtByte);
//字符串为UTF-8编码
String txt = new String(txtByte, "UTF-8");
// 输出字符串
System.out.println(txt);
// 读取图片数据长度
byte[] imgLenByte = new byte[4];
in.read(imgLenByte);
int imgLen = byte4ToInt(imgLenByte, 0);
// 读取图片数据
byte[] img = new byte[imgLen];
in.read(img);
// 生成图片文件
saveToImgByBytes(filePath, fileName, img);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
*
* @Description 将字节写入文件
* @param imgName
* @param imgByte
*
* @author wjggwm
* @data 2017年2月7日 上午11:07:45
*/
public static void saveToImgByBytes(String filePath, String imgName, byte[] imgByte) {
try {
File dic = new File(filePath);
if (!dic.exists()) {
dic.mkdirs();
}
File image = new File(filePath + imgName);
if (!image.exists()) {
image.createNewFile();
}
FileOutputStream fos = new FileOutputStream(image);
fos.write(imgByte);
fos.flush();
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @Description byte数组转换为无符号short整数
* @param bytes
* @param off
* @return
*
* @author wjggwm
* @data 2017年2月7日 上午11:05:58
*/
public static int byte2ToUnsignedShort(byte[] bytes, int off) {
// 注意高位在后面,即大小端问题
int low = bytes[off];
int high = bytes[off + 1];
return (high << 8 & 0xFF00) | (low & 0xFF);
}
/**
*
* @Description byte数组转换为int整数
* @param bytes
* @param off
* @return
*
* @author wjggwm
* @data 2017年2月7日 上午11:07:23
*/
public static int byte4ToInt(byte[] bytes, int off) {
// 注意高位在后面,即大小端问题
int b3 = bytes[off] & 0xFF;
int b2 = bytes[off + 1] & 0xFF;
int b1 = bytes[off + 2] & 0xFF;
int b0 = bytes[off + 3] & 0xFF;
return (b0 << 24) | (b1 << 16) | (b2 << 8) | b3;
}
}
④ java怎么实现读取一个文件,拿到二进制流
InputStream 就是读取二进制文件的, 任何文件都可以用这个流来读, 也叫字节输入流
⑤ java 如何显示 二进制
java显示二进制,主要是使用基本类型的包装类的tobinaryString类型进行转换,代码如下:
packagecom.qiu.lin.he;
importjava.text.ParseException;
publicclassCeshi{
publicstaticvoidmain(String[]args)throwsParseException{
inti=8;
//使用包装类的toBinaryString转换成二进制
System.out.println(Integer.toBinaryString(i));
}
}
运行结果如下
⑥ java 里面怎么使用二进制数组二进制数组都有一些什么操作或者方法谢谢!
1、没有二进制数组这个概念
2、如果想存储二进制的数据可以使用boolean型数组,或byte[]、int[]都可以只是空间使用的差别。
byte[] data={1,0};
boolean[] b= {true,false};
3、或者你可以封装一个BiteArray类,来完成二进制数数组,这个方法就你自己定义了,你想让它有什么功能,他就又什么功能。
4、至于后面一个问题,就是要看你自己怎么扩展了,基本的数组操作或者其他你附加的一些方法。
⑦ JAVA二进制流的问题
BufferedWriter类的write(int c)方法是写入单个字符,虽然参数是32位的int,但是如果超过16位将会发生截断,也就是把低16位的值所表示的字符写到输出流,例子中的100000000的低16位是1110000100000000,正好就是57600,然后就到文件结尾返回-1
⑧ java 将文件(如zip、txt等)转换成二进制数据并打印出来
可以通过BufferedReader 流的形式进行流缓存,之后通过read(字节流)方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
byte[] b = new byte[1024];
int len = 0;
while((len=bre .read(b))!=-1){//判断是不是到最后一个字节
System.out.println(new String(b,0,len));//输出二进制内容
}
bre.close();//关闭流
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。
⑨ java如何处理一个二进制流
二进制流保存时是以字节方式的例如 0xff 等将字节保存入byte数组即可
⑩ Java:关于java的二进制与运算,下面的过程是怎么实现的呢
你是想判断每一位是否是1对吧,其实你可以把&某种程度看成乘法(两个二进制数对应的位相乘,都是1则为1,有一个为0就是0),如果你想判断一个数的二进制哪个位置上是否是1,那么你就选定那个位置为1的那个数和这个数&连接,如
你想判断14第二位是否是1,只需用14和这10(3)这个二进制用&连接看是否等于0,想看第三位是否是1,就用14和100这个二进制数用&连接看结果是否是0