io压缩流
先生成压缩对象入口因为需要被压缩的文件不止一个需要用相同方法生成压缩入口文件后才能放进压缩文件。
首先服务器应该开启,并开启一个端口号供客户端进行连接通信,实现这个是通过服务器通过监听这个端口号的通信来确定是否有客户端进行访问,实现这个是通过,服务器做好了准备工作,那客户端可以与客户端进行通信了,首先创建连接,这里的ip和port都是服务器的。
‘贰’ 用 javax.imageio 实现图片压缩原理是什么
下面是传进byte[],传出byte[]数组的,稍微修改即可即可,(data为传过来的byte[]数组)
Java代码
ByteArrayInputStream is = new ByteArrayInputStream(data);
BufferedImage src = null;
ByteArrayOutputStream out = null;
ImageWriter imgWrier;
ImageWriteParam imgWriteParams;
// 指定写图片的方式为 jpg
imgWrier = ImageIO.getImageWritersByFormatName("jpg").next();
imgWriteParams = new javax.imageio.plugins.jpeg.JPEGImageWriteParam(null);
// 要使用压缩,必须指定压缩方式为MODE_EXPLICIT
imgWriteParams.setCompressionMode(imgWriteParams.MODE_EXPLICIT);
// 这里指定压缩的程度,参数qality是取值0~1范围内,
imgWriteParams.setCompressionQuality((float)0.1/data.length);
imgWriteParams.setProgressiveMode(imgWriteParams.MODE_DISABLED);
ColorModel colorModel = ColorModel.getRGBdefault();
// 指定压缩时使用的色彩模式
imgWriteParams.setDestinationType(new javax.imageio.ImageTypeSpecifier(colorModel, colorModel
.createCompatibleSampleModel(16, 16)));
try {
src = ImageIO.read(is);
out = new ByteArrayOutputStream(data.length);
imgWrier.reset();
// 必须先指定 out值,才能调用write方法, ImageOutputStream可以通过任何 OutputStream构造
imgWrier.setOutput(ImageIO.createImageOutputStream(out));
// 调用write方法,就可以向输入流写图片
imgWrier.write(null, new IIOImage(src, null, null), imgWriteParams);
out.flush();
out.close();
is.close();
data = out.toByteArray();
} catch(Exception e) {
e.printStackTrace();
}
‘叁’ IO的流的概念是什么什么是流
IO是输入(I)和输出(O)的意思。这个“流”应该是流媒体的意思。
流媒体(英语:Streaming Media)是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术与过程,此技术使得数据数据包得以像流水一样发送,如果不使用此技术,就必须在使用前下载整个媒体文件。
一些流行的流媒体服务包括Hulu、Netflix、Amazon Prime Video以及视频分享网站YouTube, 音乐流网站有Spotify以及Apple Music,电子游戏流网站有Twitch以及Mixer。
‘肆’ IO压缩流问题,为什么老是出现no current ZIP entry错误
类似问题: Archive for required library: ‘WebContent/WEB-INF/lib/readme.txt’ in project ‘xxxxxxxxx’ cannot be read or is not a valid ZIP file 解决方案: 用记事本打开项目根目录的.classpath文件,找到“”这一行,删掉
‘伍’ io流读文件与从数据库读文件,哪个效率高些
当然是从文本里读取速度会更快了。
理由很简单,因为数据库是加密压缩的,所以读取后肯定先解压解密,而文本文件是很赤裸裸的东西,光用记事本就能看得到内容,所以省去了解压和解密的时间咯~~~
你说是文本快?还是数据库快?
‘陆’ java 如何将 txt 文件 变成zip压缩文件 求例子!!
这个要用 压缩流类 ZipOutputStream
下面是一个例子 在D盘下有个 名字叫 demo.txt的文件.程序运行后会再D盘下生成一个demo.zip的文件,以下是代码:
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipOutputStreamDemo {
public static void main(String args[]) throws IOException {
//定义要压缩的文件 也就是说在D盘里有个 demo.txt 的文件(必须要有,否者会有异常,实际应用中可判断);
File file = new File("d:" + File.separator + "demo.txt");
//定义压缩文件的名称
File zipFile = new File("d:" + File.separator + "demo.zip");
//定义输入文件流
InputStream input = new FileInputStream(file);
//定义压缩输出流
ZipOutputStream zipOut = null;
//实例化压缩输出流,并制定压缩文件的输出路径 就是D盘下,名字叫 demo.zip
zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
zipOut.putNextEntry(new ZipEntry(file.getName()));
//设置注释
zipOut.setComment("www.demo.com");
int temp = 0;
while((temp = input.read()) != -1) {
zipOut.write(temp);
}
input.close();
zipOut.close();
}
}
希望能帮助楼主,建议楼主多看看JDK文档,设计到文件的输出什么都在JAVA.IO包里,好好看看..
不过楼主要知道,压缩流也是inputstream和outputstream的子类,但是并没有定义在java.io包里,而是以一个工具类的形式出现的,但是在用的时候还是需要java.io包的支持的...
‘柒’ 关于二进制IO和文本IO
二进制的io效率一定比字符型的io效率高,这是肯定的.
其实二进制的io可以完全取代字符型的io.但是用起来会很痛苦.也就是说自己要处理很多有关字符转换的东西.而字符型的io的已经把各种各样的转换,可能会出现的问题都封装好了,你只要使用就行了.自己就不需要处理太多的细节.提高开发效率.
不过你的水平比较高的话,还是推荐你使用二进制的io.
因为java中很多io算法都是针对二进制的.例如:zip压缩算法.
‘捌’ JAVA压缩文件问题
import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
public class ZipOutputStreamDemo01{
public static void main(String args[]) throws Exception{ // 所有异常抛出
File file = new File("d:" + File.separator + "mldn.txt") ; // 定义要压缩的文件
File zipFile = new File("d:" + File.separator + "mldn.zip") ; // 定义压缩文件名称
InputStream input = new FileInputStream(file) ; // 定义文件的输入流
ZipOutputStream zipOut = null ; // 声明压缩流对象
zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 设置ZipEntry对象
zipOut.setComment("www.mldnjava.cn") ; // 设置注释
int temp = 0 ;
while((temp=input.read())!=-1){ // 读取内容
zipOut.write(temp) ; // 压缩输出
}
input.close() ; // 关闭输入流
zipOut.close() ; // 关闭输出流
}
};
问题(1)我想问下 zipOut.putNextEntry(new ZipEntry(file.getName())) ; 这段程序是什么意思这段程序中的file.getName() 这个getName()从哪里跑出来的没有这个方法啊。
问题(2)
zipOut.setComment("www.mldnjava.cn") ; // 设置注释
这段程序是什么意思啊 ?有什么用?