Ⅰ 请大神帮忙解决一个用java解压缩一个zip压缩格式字节流中文内容乱码问题!
服务器端一般不是采用的是gzip吗。
Ⅱ 什么是字节流文件
字节流(byte stream) 不包含边界数据的连续流 字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,public String(byte bytes[], String charsetName)有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang 流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
Ⅲ 文件传输的文件传输方式
根据移动和存储文件、打印文件和程序输入等目的不同,文件传输有三种工作方式,即信息流方式、压缩方式和信息块方式。
①信息流方式把文件作为字节流传输。文件可分为若干由一系列字节或机器字长为单位的逻辑单元所组成的逻辑记录。在一个记录或一个文件的结尾有“记录结束”或“文件结束”等“结束”标志。“结束”标志由两个字节组成。第一字节为“转义”字节,第二字节为 相应的“结束”字节。如果文件中的数据字节恰与“转义”字节相同,即按字符填充办法处理。也就是说发方在数据字节前多发一“转义”字节,而收方遇到到连续两个“转义”字节时去掉一个,以达到数据的透明传输。
②压缩方式 也是把文件表示成字节序列进行传输,但把其中重复出现的字节(如空白字符)进行压缩,以提高传输效率。为此,这种字节流是由常规数据、压缩数据和控制信息三种成分相互交错组成。毎一成分之前均有一字节指出相关信息。打印文件采用此方式。
③信息块方式把文件表示为一系列信息块进行传输。每块前面有指出该信息块长度的块头。
虚文件概念在计算机系统中,文件格式和数据表示不尽相同,如不同的字符集、编码以及机器字长等。传输文件时为使数据的语义保持不变,需要作相应转换。为了减少转换软件的数量,引入虚文件概念。在网路范围内定义共同的虚文件结构和虚文件传输系统。制定一种标准的逻辑文件结构和数据表示。各个主机在传输文件时,要把自己的文件数据转换成能在网路上传输的标准形式。而目的主机在接收时再把它转换为自己的局部形式。由此解决了不同的文件管理系统之间的不相容问题。
Ⅳ C/C++ 如何把经哈夫曼压缩算法后的字节流保存到文件中
用到了C语言的位运算。文件的保存是按照自己为单位的,1字节8位,也就是说你的问题,需要2个字节存储。顺便说一下,你还需要保存字典信息(编码和字符的对应信息),这样才能完成解压。不然压缩毫无意义。
将整数n的第i位置为1 的代码 n |= 1 << i;
将整数n的第i为置为0的代码 n &= ~(1 << i);
Ⅳ 计算机网络,请问字节流和报文流的区别是什么
字节流是由字节组成的,
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
字符流和字节流都是什么
流就是stream. 一个连续的字节队列。
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件
流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统。它本身并不是一个物理设备的概念。
引入流的目的:
传统的字符设备驱动程序框架有许多缺点,这表现在:
。内核与字符设备驱动程序间接口的抽象层次太高
。内核没有为字符设备提供可靠的缓冲区分配和管理功能
。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制
。在网络数据传输设备中这些问题更突出。网络中数据传输是基于消息或数据分组的。
流的概念:
用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道。
从流的构造上来说,它由一个流头,一个流驱动程序尾,以及其间的零个或若干个可选模块构成 。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流。驱动程序尾与底层设备通信。在流的中间的模块是处理数据的。
字节流与字符流主要的区别是他们的的处理对象
字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang
流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
报文是网络中交换与传输的数据单元。报文包含了将要发送的完整的数据信息,其长短很不一致。(可分为自由报文和数字报文)
报文也是网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,那些就是报文头
以一定格式组织起来的数据.
比如里面有报文类型, 报文版本, 报文长度, 报文实体等等信息.
完全与系统定义, 或自定义的数据结构同义.
来几个 TCP/IP 头结构感受一下:
typedef struct _iphdr //定义IP首部
{
unsigned char h_lenver; //4位首部长度+4位IP版本号
unsigned char tos; //8位服务类型TOS
unsigned short total_len; //16位总长度(字节)
unsigned short ident; //16位标识
unsigned short frag_and_flags; //3位标志位
unsigned char ttl; //8位生存时间 TTL
unsigned char proto; //8位协议 (TCP, UDP 或其他)
unsigned short checksum; //16位IP首部校验和
unsigned int sourceIP; //32位源IP地址
unsigned int destIP; //32位目的IP地址
}IP_HEADER;
typedef struct psd_hdr //定义TCP伪首部
{
unsigned long saddr; //源地址
unsigned long daddr; //目的地址
char mbz;
char ptcl; //协议类型
unsigned short tcpl; //TCP长度
}PSD_HEADER;
typedef struct _tcphdr //定义TCP首部
{
USHORT th_sport; //16位源端口
USHORT th_dport; //16位目的端口
unsigned int th_seq; //32位序列号
unsigned int th_ack; //32位确认号
unsigned char th_lenres; //4位首部长度/6位保留字
unsigned char th_flag; //6位标志位
USHORT th_win; //16位窗口大小
USHORT th_sum; //16位校验和
USHORT th_urp; //16位紧急数据偏移量
}TCP_HEADER;
// 这里只是数据头, 但头最能让你看清报文是啥东东
// IP_HEADER::total_len 指明了实体数据(也就是真正的消息内容)长度.
// 其他以此类推
Ⅵ 字节流与字符流有什么区别
字节流与字符流有2点不同,相关介绍具体如下:
一、两者的组成不同:
1、字节流的组成:字节流是由字节组成的。
2、字符流的组成:字符流是由字符组成的。
二、两者的处理不同:
1、字节流的处理:主要用在处理二进制数据,它是按字节来处理的但实际中很多的数据是文本。
2、字符流的处理:按虚拟机的encode来处理,也就是要进行字符集的转化。
(6)字节流压缩扩展阅读:
字节流的其他介绍:
字节流由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕;
而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。
Ⅶ 字节流和字符流区别
您好!关于字节流,就是用来读取字节文件的文件流形式,一般用于读取类似于图片,音乐,压缩文件等,并不是由一个一个得中文或英文之类的标准文字字符字符组成的文件,在读取的时候,需要一个一个byte的去读取。而字符流则可以读取例如txt文档这一类的,由标准的中英文字符或其他标准语言组成的文件,这一类文件可以直接按照char字符的大小为单位进行读取。而且,字符流中还提供了一次读一行的方法呦!祝阁下学习愉快!
Ⅷ 如何用zlib将很多文件或一个文件夹压缩
问题的根源在于这些网友对于字符串和字节流的概念非常的模糊,对文本文件和二进制文件的区别常常模棱两可,其实字节流可以表示所有的数据,二进制文件才是任何文件的本质。字节流是一个字节接一个字节,并没有结束符号
Ⅸ 字节流解析是什么
字节流是由字节组成的,
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
字符流和字节流都是什么
流就是stream. 一个连续的字节队列。
流是程序输入或输出的一个连续的字节序列,设备(例如鼠标,键盘,磁盘,屏幕和打印机)的输入和输出都是用流来处理的。在C语言中,所有的流均以文件的形式出现---不一定是物理磁盘文件,还可以是对应与某个输入/输出源的逻辑文件
流(streams)在I/O系统中是一种I/O机制和功能,或者称为streams子系统。它本身并不是一个物理设备的概念。
引入流的目的:
传统的字符设备驱动程序框架有许多缺点,这表现在:
。内核与字符设备驱动程序间接口的抽象层次太高
。内核没有为字符设备提供可靠的缓冲区分配和管理功能
。许多系统对字符设备的界面是把数据看成是FIFO(先进先出)的字节流,因此没有识别消息边界,区分普通设备和控制信息,以及判定不同消息优先级的能力,也没有字节流流量控制
。在网络数据传输设备中这些问题更突出。网络中数据传输是基于消息或数据分组的。
流的概念:
用通讯中的术语来说,流是全双工的处理过程,它是内核中驱动程序和用户进程之间的数据传输通道。
从流的构造上来说,它由一个流头,一个流驱动程序尾,以及其间的零个或若干个可选模块构成 。流头是一个用户级接口,它允许用户应用程序通过系统调用接口来访问流。驱动程序尾与底层设备通信。在流的中间的模块是处理数据的。
字节流与字符流主要的区别是他们的的处理对象
字节流是由字节组成的,字符流是由字符组成的. Java里字符由两个字节组成.
字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的
但实际中很多的数据是文本,又提出了字符流的概念,它是按虚拟机的encode来处理,也就是要进行字符集的转化。在从字节流转化为字符流时,实际上就是byte[]转化为String时,
public String(byte bytes[], String charsetName)
有一个关键的参数字符集编码,通常我们都省略了,那系统就用操作系统默认的lang
流式传输主要指将整个音频和视频及三维媒体等多媒体文件经过特定的压缩方式解析成一个个压缩包,由视频服务器向用户计算机顺序或实时传送。在采用流式传输方式的系统中,用户不必像采用下载方式那样等到整个文件全部下载完毕,而是只需经过几秒或几十秒的启动延时即可在用户的计算机上利用解压设备对压缩的A/V、3D等多媒体文件解压后进行播放和观看。此时多媒体文件的剩余部分将在后台的服务器内继续下载。