inputstream转byte(inputstream转成fileinputstream)

admin 202 0

大家好,关于inputstream转byte很多朋友都还不太明白,今天小编就来为大家分享关于inputstream转成fileinputstream的知识,希望对各位有所帮助!

一、java中byte[]转换成int

1、java中byte转换为 int有两种情况,一种是要求保持值不变,例如进行数值计算,可采用强制类型转换:int i=(int) aByte;

2、另一种是要求保持最低字节中各个位不变,3个高字节全部用0填充,例如进行编解码操作,

3、则需要采用位操作:int i= b& 0xff;

4、该函数返回一个int类型,范围从0至255,如果到达流末尾,返回-1。通过ByteArrayInputStream的源码可以看到是如何从byte转到int

5、public synchronized int read(){

6、return(pos< count)?(buf[pos++]& 0xff):-1;

7、注意,不是自动转的,需要强制做处理。

二、如何将对象转成byte

1、///将DataSet格式化成字节数组byte[]

2、///<param name="dsOriginal">DataSet对象</param>

3、///<returns>字节数组</returns>

4、 public static byte[] GetBinaryFormatData(DataSet dsOriginal)

5、 byte[] binaryDataResult= null;

6、 MemoryStream memStream= new MemoryStream();

7、 IFormatter brFormatter= new BinaryFormatter();

8、 dsOriginal.RemotingFormat= SerializationFormat.Binary;

9、 brFormatter.Serialize(memStream, dsOriginal);

10、 binaryDataResult= memStream.ToArray();

11、///将DataSet格式化成字节数组byte[],并且已经经过压缩

12、///<param name="dsOriginal">DataSet对象</param>

13、///<returns>字节数组</returns>

14、 public static byte[] GetBinaryFormatDataCompress(DataSet dsOriginal)

15、 byte[] binaryDataResult= null;

16、 MemoryStream memStream= new MemoryStream();

17、 IFormatter brFormatter= new BinaryFormatter();

18、 dsOriginal.RemotingFormat= SerializationFormat.Binary;

19、 brFormatter.Serialize(memStream, dsOriginal);

20、 binaryDataResult= memStream.ToArray();

21、 return Compress(binaryDataResult);

22、///<param name="data"></param>

23、///<returns></returns>

24、 public static byte[] Decompress(byte[] data)

25、 MemoryStream ms= new MemoryStream();

26、 ms.Write(data, 0, data.Length);

27、 GZipStream stream= new GZipStream(ms, CompressionMode.Decompress, true);

28、 byte[] buffer= new byte[1024];

29、 MemoryStream temp= new MemoryStream();

30、 int read= stream.Read(buffer, 0, buffer.Length);

31、 read= stream.Read(buffer, 0, buffer.Length);

32、//必须把stream流关闭才能返回ms流数据,不然数据会不完整

33、///<param name="data"></param>

34、///<returns></returns>

35、 public static byte[] Compress(byte[] data)

36、 MemoryStream ms= new MemoryStream();

37、 GZipStream stream= new GZipStream(ms, CompressionMode.Compress, true);

38、 stream.Write(data, 0, data.Length);

39、//必须把stream流关闭才能返回ms流数据,不然数据会不完整

40、//并且解压缩方法stream.Read(buffer, 0, buffer.Length)时会返回0

41、///将字节数组反序列化成DataSet对象

42、///<param name="binaryData">字节数组</param>

43、///<returns>DataSet对象</returns>

44、 public static DataSet RetrieveDataSet(byte[] binaryData)

45、 MemoryStream memStream= new MemoryStream(binaryData, true);

46、//byte[] bs= memStream.GetBuffer();

47、// memStream.Write(bs, 0, bs.Length);

48、//memStream.Seek(0, SeekOrigin.Begin);

49、 IFormatter brFormatter= new BinaryFormatter();

50、 ds=(DataSet)brFormatter.Deserialize(memStream);

51、///将字节数组反解压后序列化成DataSet对象

52、///<param name="binaryData">字节数组</param>

53、///<returns>DataSet对象</returns>

54、 public static DataSet RetrieveDataSetDecompress(byte[] binaryData)

55、 MemoryStream memStream= new MemoryStream(Decompress(binaryData));

56、 IFormatter brFormatter= new BinaryFormatter();

57、 Object obj= brFormatter.Deserialize(memStream);

58、///将object格式化成字节数组byte[]

59、///<param name="dsOriginal">object对象</param>

60、///<returns>字节数组</returns>

61、 public static byte[] GetBinaryFormatData(object dsOriginal)

62、 byte[] binaryDataResult= null;

63、 MemoryStream memStream= new MemoryStream();

64、 IFormatter brFormatter= new BinaryFormatter();

65、 brFormatter.Serialize(memStream, dsOriginal);

66、 binaryDataResult= memStream.ToArray();

67、///将objec格式化成字节数组byte[],并压缩

68、///<param name="dsOriginal">object对象</param>

69、///<returns>字节数组</returns>

70、 public static byte[] GetBinaryFormatDataCompress(object dsOriginal)

71、 byte[] binaryDataResult= null;

72、 MemoryStream memStream= new MemoryStream();

73、 IFormatter brFormatter= new BinaryFormatter();

74、 brFormatter.Serialize(memStream, dsOriginal);

75、 binaryDataResult= memStream.ToArray();

76、 return Compress(binaryDataResult);

77、///将字节数组反序列化成object对象

78、///<param name="binaryData">字节数组</param>

79、///<returns>object对象</returns>

80、 public static object RetrieveObject(byte[] binaryData)

81、 MemoryStream memStream= new MemoryStream(binaryData);

82、 IFormatter brFormatter= new BinaryFormatter();

83、 Object obj= brFormatter.Deserialize(memStream);

三、byte[]数组如何转换成fileInputStream

1、如果必须要用FileOutputStream的话那是没有办法的,因为FileOutputStream是属于比较底层的流,所有的构造方法都与文件关联。

2、但是如果要写入blob中的话使用FileOutputStream却是有点儿多余的,因为像你那样写入文件读出来之后同样还是byte数组,所以可以直接使用OutputStream的write(byte[] b, int off, int len)方法,OFF开始标记一般设为0,len偏移量一般设为byte的length大小

四、怎样把ServletInputStream的数据转变成byte

如果必须要用FileOutputStream的话那是没有办法的,因为FileOutputStream是属于比较底层的流,所有的构造方法都与文件关联。但是如果要写入blob中的话使用FileOutputStream却是有点儿多余的,因为像你那样写入文件读出来之后同样还是byte数组,所以可以直接使用OutputStream的write(byte[] b, int off, int len)方法,OFF开始标记一般设为0,len偏移量一般设为byte的length大小

五、怎么将一个ZipInputStream的ZipEntry转换成byte

Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩、网络传输和解

压缩的实现比较容易,下面介绍利用ZipEntry、ZipInputStream和ZipOutputStream三个Java

类实现zip数据压缩方式的编程方法。

zip压缩文件结构:一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的

ZipOutputStream实现了zip压缩文件的写输出流,支持压缩和非压缩entry。下面是它的

public ZipOutputStream(OutputStream out);

∥利用输出流out构造一个ZIP输出流。

public void setMethod(int method);

∥设置entry压缩方法,缺省值为DEFLATED。

public void putNextEntry(ZipEntry newe);

∥如果当前的entry存在且处于激活状态时,关闭它,在zip文件中写入新的entry-newe

并将数据流定位于entry数据项的起始位置,压缩方法为setMethod指定的方法。

ZipInputStream实现了zip压缩文件的读输入流,支持压缩和非压缩entry。下面是它的

public ZipInputStream(InputStream in);

∥利用输入流in构造一个ZIP输出流。

public ZipEntry getNextEntry();

∥返回ZIP文件中的下一个entry,并将输出流定位在此entry数据项的起始位置。

∥关闭当前的zip entry,并将数据流定位于下一个entry的起始位置。

下列的程序实现了数据文件zip方式的压缩和解压缩方法。randomData()函数随机生成

50个double数据,并放在doc字符串变量中;openFile()函数读取ZIP压缩文件;saveFile()函数

将随机生成的数据存到ZIP格式的压缩文件中。

public class TestZip extends Frame implements ActionListener{

TextArea textarea;∥显示数据文件的多行文本显示域

TextField infotip;∥显示数据文件未压缩大小及压缩大小单行文本显示域

String doc;∥存储随机生成的数据

long doczipsize= 0;∥压缩数据文件的大小

MenuBar menubar= new MenuBar();

Menu file= new Menu("File",true);

MenuItem neww= new MenuItem("New");

MenuItem open=new MenuItem("Open");

MenuItem save=new MenuItem("Save");

MenuItem exit=new MenuItem("Exit");

∥随机生成的数据文件的多行文本显示域

add("Center",textarea= new TextArea());

∥提示文本原始大小、压缩大小的单行文本显示域

add("South",infotip= new TextField());

public static void main(String args[]){

∥随机生成50个double数据,并放在doc字符串变量中。

doc=doc+new Double(rdm).toString();

∥打开zip文件,将文件内容读入doc字符串变量中。

FileDialog dlg=new FileDialog(this,"Open",FileDialog.LOA D);

String filename=dlg.getDirectory()+dlg.getFile();

if(!f.exists()) return;∥文件不存在,则返回

∥用文件输入流构建ZIP压缩输入流

ZipInputStream zipis=new ZipInputStream(new FileInputStream(f));

∥将输入流定位在当前entry数据项位置

DataInputStream dis=new DataInputStream(zipis);

∥用ZIP输入流构建DataInputStream

doc=dis.readUTF();∥读取文件内容

doczipsize= f.length();∥获取ZIP文件长度

∥打开zip文件,将doc字符串变量写入zip文件中。

FileDialog dlg=new FileDialog(this,"Save",FileDialog.SAVE);

String filename=dlg.getDirectory()+dlg.getFile();

if(!f.exists()) return;∥文件不存在,则返回

∥用文件输出流构建ZIP压缩输出流

ZipOutputStream zipos=new ZipOutputStream(new FileOutputStream(f));

zipos.setMethod(ZipOutputStream.DEFLATED);∥设置压缩方法

zipos.putNextEntry(new ZipEntry("zip"));

∥生成一个ZIP entry,写入文件输出流中,并将输出流定位于entry起始处。

DataOutputStream os=new DataOutputStream(zipos);

∥用ZIP输出流构建DataOutputStream;

os.writeUTF(doc);∥将随机生成的数据写入文件中

private void showTextandInfo(){

textarea.replaceRange(doc,0,textarea.getText().length());

infotip.setText("uncompressed size:"+doc.length()+"compressed size:"+dc zipsize);

public void actionPerformed(ActionEvent e){

String arg= e.getActionCommand();

if("New".equals(arg)) randomData();

else if("Open".equals(arg)) openFile();

else if("Save".equals(arg)) saveFile();

System.out.println("no this command!");

inputstream转byte的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于inputstream转成fileinputstream、inputstream转byte的信息别忘了在本站进行查找哦。