- 浏览: 93611 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
-
lehsyh:
为啥本地仓库没这个jar包呢,有没有个好的解决办法
pom_xml报错“Missing artifact” - Change is constant___ -
Neoman:
[url][/url][flash=200,200][/fla ...
struts2批量封装到set/list元素(转载)
由于频繁需要解压ZIP,加压ZIP
FileItem:
Java代码
public class FileItem {
private String fileName;
private byte[] fileContent;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public byte[] getFileContent() {
return fileContent;
}
public void setFileContent(byte[] fileContent) {
this.fileContent = fileContent;
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
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.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class FileUtil {
/**缓存大小*/
private final static int BUFFER_SIZE = 8192;
/**后缀名*/
private final static String SUFFIX = "zip";
/**后缀名分隔符*/
private final static String POINT = ".";
// /**
// 26. * 获得字节数组
// 27. *
// 28. * @param filepath 文件全路径
// 29. * @return 字节数组
// 30. * @throws IOException IOException
// 31. */
public static byte[] getBytes(File file) throws IOException{
return getBytes(file.getAbsolutePath());
}
public static byte[] getBytes(String filepath) throws IOException {
BufferedInputStream bis = null;
ByteArrayOutputStream byteArrayOutputStream = null;
BufferedOutputStream bos = null;
try {
byteArrayOutputStream = new ByteArrayOutputStream();
bis = new BufferedInputStream(new FileInputStream(filepath));
bos = new BufferedOutputStream(byteArrayOutputStream);
byte[] bytes = new byte[BUFFER_SIZE];
int len;
while ((len = bis.read(bytes, 0, BUFFER_SIZE)) != -1) {
bos.write(bytes, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
throw e;
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != bis) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != byteArrayOutputStream) {
try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != bos) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return byteArrayOutputStream.toByteArray();
}
// /**
// 82. * 统一文件分隔符为LINUX,类UNIX文件系统风格
// 83. *
// 84. * @param direcotory 目录
// 85. * @return 统一处理后目录字符串风格
// 86. */
private static String replaceAllSeparator(String direcotory) {
String str = direcotory.replaceAll("\\\\", "/");
return str.length() != str.lastIndexOf("/") ? str + "/" : str;
}
// 92. /**
// 93. * 将文件项写到文件
// 94. *
// 95. * @param fileItem 文件项
// 96. * @param directory 目录
// 97. * @throws IOException IOException
// 98. */
public static void writeFile(FileItem fileItem, String directory)
throws IOException {
File dir = new File(directory);
if (!dir.exists()) {
dir.mkdirs();
}
writeFile(fileItem.getFileContent(), replaceAllSeparator(directory)
+ fileItem.getFileName());
}
// 109. /**
// 110. * 写文件
// 111. *
// 112. * @param fileContent 文件二进制流
// 113. * @param filepath 文件全路径
// 114. * @throws IOException IOException
// 115. */
public static void writeFile(byte[] fileContent, String filepath)
throws IOException {
InputStream inputStream = new ByteArrayInputStream(fileContent);
writeFile(inputStream, filepath);
}
// 122. /**
// 123. * 将流写到一个文件
// 124. *
// 125. * @param inputStream 文件流
// 126. * @param filepath 文件路径
// 127. * @throws IOException IOException
// 128. */
public static void writeFile(InputStream inputStream, String filepath)
throws IOException {
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
File file = new File(filepath);
if (!file.exists()) {
file.createNewFile();
}
bos = new BufferedOutputStream(new FileOutputStream(file));
bis = new BufferedInputStream(inputStream);
byte[] buffer = new byte[BUFFER_SIZE];
int len = -1;
while ((len = bis.read(buffer, 0, BUFFER_SIZE)) != -1) {
bos.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != bos)
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
if (null != bis)
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 164. /**
// 165. * 解压zip文件
// 166. * @param filepath 文件全路径
// 167. * @return 解压后的文件项
// 168. * @throws IOException IOException
// 169. */
public static List uncompressZip(String filepath) throws IOException {
ByteArrayOutputStream baos = null;
BufferedOutputStream bos = null;
ZipInputStream zis = null;
// zipInputStream
List fileList = null;
try {
zis = new ZipInputStream(new FileInputStream(filepath));
baos = new ByteArrayOutputStream();
bos = new BufferedOutputStream(baos);
fileList = new ArrayList();
byte[] buffer = new byte[BUFFER_SIZE];
int len = -1;
ZipEntry zipEntry = null;
while (null != (zipEntry = zis.getNextEntry())) {
if (null != zipEntry) {
System.out.println("Name:" + zipEntry.getName() + ",Size:"
+ zipEntry.getSize() + "bytes");
while (-1 != (len = zis.read(buffer))) {
bos.write(buffer, 0, len);
}
bos.flush();
byte[] fileContent = baos.toByteArray();
FileItem item = new FileItem();
item.setFileName(zipEntry.getName());
item.setFileContent(fileContent);
fileList.add(item);
}
}
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != zis) {
try {
zis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != baos) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != bos) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fileList;
}
// 228. /**
// 229. * 将目录压缩成zip包
// 230. *
// 231. * @param filepath
// 232. * 文件全路径
// 233. * @throws IOException
// 234. * IOException
// 235. */
public static FileItem compressZip(String filepath) throws IOException {
File directory = new File(filepath);
String filename = directory.getName();
File[] fileList = directory.listFiles();
ZipOutputStream zos = null;
BufferedInputStream bis = null;
ByteArrayOutputStream baos = null;
FileItem fileItem = null;
try {
baos = new ByteArrayOutputStream();
zos = new ZipOutputStream(baos);
byte[] buffer = new byte[BUFFER_SIZE];
int len = -1;
for (File file : fileList) {
bis = new BufferedInputStream(new FileInputStream(file));
while (-1 != (len = bis.read(buffer, 0, BUFFER_SIZE))) {
//ZipEntry为Zip压缩文件的每一项
ZipEntry zipEntry = new ZipEntry(file.getName());
zipEntry.setSize(file.length());
zipEntry.setCompressedSize(file.length());
zos.putNextEntry(zipEntry);
zos.write(buffer, 0, len);
}
//做完一个文件的读写应清下缓存
zos.flush();
if (null != bis) {
bis.close();
}
}
//完成所有文件的读取,转化为一个二进制流的包装zos
zos.finish();
fileItem = new FileItem();
int index = filename.lastIndexOf(".");
filename = filename.substring(0, -1 == index ? filename.length()
: index);
//要生成zip文件的文件名
fileItem.setFileName(filename + POINT + SUFFIX);
//要生成的zip文件的二进制流
fileItem.setFileContent(baos.toByteArray());
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != baos) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != bis) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != zos) {
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fileItem;
}
/**
* 解压zip文件
*
* @param zipFile zip文件
* @return 解压后的文件项
* @throws IOException IOException
*/
public static List uncompressZip(File zipFile) throws IOException {
String filepath = zipFile.getAbsolutePath();
return uncompressZip(filepath);
}
public static void main(String[] args) throws IOException {
//加压
FileItem fileItem = compressZip("F:/aa");
//将SCYSB_1234567890_0901_20100912082719250.zip文件写到F:/zjie目录
FileUtil.writeFile(fileItem, "F:/zjie");
//解压F:/zjie/SCYSB_1234567890_0901_20100912082719250.zip文件
List fileItemList = FileUtil
.uncompressZip("F:/zjie/aa.zip");
//将解压后的文件流生成文件写到F:/zjie/SCYSB_1234567890_0901_20100912082719250/目录
for (int i = 0; i < fileItemList.size(); i++) {
FileItem item = (FileItem) fileItemList.get(i);
// DbfUtil.dbfReader(item.getFileContent());
FileUtil.writeFile(item.getFileContent(), "F:/zjie/SCYSB_1234567890_0901_20100912082719250/"+item.getFileName());
}
}
}
FileItem:
Java代码
public class FileItem {
private String fileName;
private byte[] fileContent;
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public byte[] getFileContent() {
return fileContent;
}
public void setFileContent(byte[] fileContent) {
this.fileContent = fileContent;
}
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
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.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
public class FileUtil {
/**缓存大小*/
private final static int BUFFER_SIZE = 8192;
/**后缀名*/
private final static String SUFFIX = "zip";
/**后缀名分隔符*/
private final static String POINT = ".";
// /**
// 26. * 获得字节数组
// 27. *
// 28. * @param filepath 文件全路径
// 29. * @return 字节数组
// 30. * @throws IOException IOException
// 31. */
public static byte[] getBytes(File file) throws IOException{
return getBytes(file.getAbsolutePath());
}
public static byte[] getBytes(String filepath) throws IOException {
BufferedInputStream bis = null;
ByteArrayOutputStream byteArrayOutputStream = null;
BufferedOutputStream bos = null;
try {
byteArrayOutputStream = new ByteArrayOutputStream();
bis = new BufferedInputStream(new FileInputStream(filepath));
bos = new BufferedOutputStream(byteArrayOutputStream);
byte[] bytes = new byte[BUFFER_SIZE];
int len;
while ((len = bis.read(bytes, 0, BUFFER_SIZE)) != -1) {
bos.write(bytes, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
throw e;
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != bis) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != byteArrayOutputStream) {
try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != bos) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return byteArrayOutputStream.toByteArray();
}
// /**
// 82. * 统一文件分隔符为LINUX,类UNIX文件系统风格
// 83. *
// 84. * @param direcotory 目录
// 85. * @return 统一处理后目录字符串风格
// 86. */
private static String replaceAllSeparator(String direcotory) {
String str = direcotory.replaceAll("\\\\", "/");
return str.length() != str.lastIndexOf("/") ? str + "/" : str;
}
// 92. /**
// 93. * 将文件项写到文件
// 94. *
// 95. * @param fileItem 文件项
// 96. * @param directory 目录
// 97. * @throws IOException IOException
// 98. */
public static void writeFile(FileItem fileItem, String directory)
throws IOException {
File dir = new File(directory);
if (!dir.exists()) {
dir.mkdirs();
}
writeFile(fileItem.getFileContent(), replaceAllSeparator(directory)
+ fileItem.getFileName());
}
// 109. /**
// 110. * 写文件
// 111. *
// 112. * @param fileContent 文件二进制流
// 113. * @param filepath 文件全路径
// 114. * @throws IOException IOException
// 115. */
public static void writeFile(byte[] fileContent, String filepath)
throws IOException {
InputStream inputStream = new ByteArrayInputStream(fileContent);
writeFile(inputStream, filepath);
}
// 122. /**
// 123. * 将流写到一个文件
// 124. *
// 125. * @param inputStream 文件流
// 126. * @param filepath 文件路径
// 127. * @throws IOException IOException
// 128. */
public static void writeFile(InputStream inputStream, String filepath)
throws IOException {
BufferedOutputStream bos = null;
BufferedInputStream bis = null;
try {
File file = new File(filepath);
if (!file.exists()) {
file.createNewFile();
}
bos = new BufferedOutputStream(new FileOutputStream(file));
bis = new BufferedInputStream(inputStream);
byte[] buffer = new byte[BUFFER_SIZE];
int len = -1;
while ((len = bis.read(buffer, 0, BUFFER_SIZE)) != -1) {
bos.write(buffer, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != bos)
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
if (null != bis)
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 164. /**
// 165. * 解压zip文件
// 166. * @param filepath 文件全路径
// 167. * @return 解压后的文件项
// 168. * @throws IOException IOException
// 169. */
public static List uncompressZip(String filepath) throws IOException {
ByteArrayOutputStream baos = null;
BufferedOutputStream bos = null;
ZipInputStream zis = null;
// zipInputStream
List fileList = null;
try {
zis = new ZipInputStream(new FileInputStream(filepath));
baos = new ByteArrayOutputStream();
bos = new BufferedOutputStream(baos);
fileList = new ArrayList();
byte[] buffer = new byte[BUFFER_SIZE];
int len = -1;
ZipEntry zipEntry = null;
while (null != (zipEntry = zis.getNextEntry())) {
if (null != zipEntry) {
System.out.println("Name:" + zipEntry.getName() + ",Size:"
+ zipEntry.getSize() + "bytes");
while (-1 != (len = zis.read(buffer))) {
bos.write(buffer, 0, len);
}
bos.flush();
byte[] fileContent = baos.toByteArray();
FileItem item = new FileItem();
item.setFileName(zipEntry.getName());
item.setFileContent(fileContent);
fileList.add(item);
}
}
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != zis) {
try {
zis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != baos) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != bos) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fileList;
}
// 228. /**
// 229. * 将目录压缩成zip包
// 230. *
// 231. * @param filepath
// 232. * 文件全路径
// 233. * @throws IOException
// 234. * IOException
// 235. */
public static FileItem compressZip(String filepath) throws IOException {
File directory = new File(filepath);
String filename = directory.getName();
File[] fileList = directory.listFiles();
ZipOutputStream zos = null;
BufferedInputStream bis = null;
ByteArrayOutputStream baos = null;
FileItem fileItem = null;
try {
baos = new ByteArrayOutputStream();
zos = new ZipOutputStream(baos);
byte[] buffer = new byte[BUFFER_SIZE];
int len = -1;
for (File file : fileList) {
bis = new BufferedInputStream(new FileInputStream(file));
while (-1 != (len = bis.read(buffer, 0, BUFFER_SIZE))) {
//ZipEntry为Zip压缩文件的每一项
ZipEntry zipEntry = new ZipEntry(file.getName());
zipEntry.setSize(file.length());
zipEntry.setCompressedSize(file.length());
zos.putNextEntry(zipEntry);
zos.write(buffer, 0, len);
}
//做完一个文件的读写应清下缓存
zos.flush();
if (null != bis) {
bis.close();
}
}
//完成所有文件的读取,转化为一个二进制流的包装zos
zos.finish();
fileItem = new FileItem();
int index = filename.lastIndexOf(".");
filename = filename.substring(0, -1 == index ? filename.length()
: index);
//要生成zip文件的文件名
fileItem.setFileName(filename + POINT + SUFFIX);
//要生成的zip文件的二进制流
fileItem.setFileContent(baos.toByteArray());
} catch (IOException e) {
e.printStackTrace();
throw e;
} finally {
if (null != baos) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != bis) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != zos) {
try {
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fileItem;
}
/**
* 解压zip文件
*
* @param zipFile zip文件
* @return 解压后的文件项
* @throws IOException IOException
*/
public static List uncompressZip(File zipFile) throws IOException {
String filepath = zipFile.getAbsolutePath();
return uncompressZip(filepath);
}
public static void main(String[] args) throws IOException {
//加压
FileItem fileItem = compressZip("F:/aa");
//将SCYSB_1234567890_0901_20100912082719250.zip文件写到F:/zjie目录
FileUtil.writeFile(fileItem, "F:/zjie");
//解压F:/zjie/SCYSB_1234567890_0901_20100912082719250.zip文件
List fileItemList = FileUtil
.uncompressZip("F:/zjie/aa.zip");
//将解压后的文件流生成文件写到F:/zjie/SCYSB_1234567890_0901_20100912082719250/目录
for (int i = 0; i < fileItemList.size(); i++) {
FileItem item = (FileItem) fileItemList.get(i);
// DbfUtil.dbfReader(item.getFileContent());
FileUtil.writeFile(item.getFileContent(), "F:/zjie/SCYSB_1234567890_0901_20100912082719250/"+item.getFileName());
}
}
}
发表评论
-
E3.Resource参考手册
2011-03-03 14:59 990E3.Resource参考手册 功能特性: 1. 动态压缩( ... -
word打不开的问题
2011-01-11 14:04 957进入C:\Documents and Settings\Adm ... -
制作网页学习课件
2011-01-06 13:38 904制作网页学习课件 -
让图片乱跳
2011-01-06 13:12 966<img src="ex1-2/DSC_069 ... -
js中setTimeout()的用法详解
2011-01-04 17:15 1211<html> <head> <s ... -
SQL日期格式化应用大全
2010-12-29 14:52 779SQL日期格式化应用大全 Sql Server 中一个非常强大 ... -
Java数组排序总结(冒泡,选择,插入,希尔)
2010-12-29 11:06 863Java数组排序总结(冒泡,选择,插入,希尔) 代码如下:~ ... -
Struts2 允许的上传的类型
2010-12-29 11:02 959Struts2 允许的上传的类型2010年03月15日 2 ... -
System.getProperty(String name)方法用于得到系统的属性
2010-12-29 10:57 894System.getProperty(String name) ... -
正则表达式语法
2010-12-28 10:40 1016正则表达式语法 一个正则表达式就是由普通字符(例如字符 a 到 ... -
Java代码执行顺序
2010-12-22 15:55 1013http://jiadongkai-sina-com.itey ... -
打开“控制面板”的"数据源"
2010-12-08 17:16 853开始 --》运行--》键入“odbcad32” -
数组转换为List
2010-11-29 22:42 1359String s[]=new String[4]; s[1]= ... -
List排序 根据里面的几个不同的元素依次排
2010-11-29 22:35 1337java List 排序 Collections.sort() ...
相关推荐
加压过滤机是一种广泛应用在工业生产中的过滤设备,尤其在矿业、化工和冶金等领域有着重要用途。它的主要作用是通过施加压力,来促进液体或气体中固体颗粒的分离,提高过滤效率和质量。为了确保加压过滤机能够稳定...
碎煤加压气化技术是一项将碎煤作为原料,在高压条件下进行气化的化工技术。该技术最早由德国鲁奇公司开发,后来在多个国家得到了应用和发展。碎煤加压气化技术相较于其他煤气化技术,具有明显的优点,其成熟可靠、...
为了解决碎煤加压气化炉生产中存在的蒸汽消耗高、污水产量大且处理费用较高的问题,提出了将气化炉产的煤气水通过高压泵送入气化炉的氧化层内,让水汽化吸收一部分热量的改进方案,喷水喷嘴采用耐高温、耐腐蚀、耐磨...
### 机械加压送风防烟系统详解 #### 一、系统作用与原理 **机械加压送风防烟系统**的主要目的是确保在建筑物发生火灾时,能够为人员提供一个安全且不受烟气干扰的疏散路径和避难场所。为了实现这一目标,系统通过...
### 机械加压送风系统设计详解 #### 一、引言 机械加压送风系统作为一种重要的建筑安全措施,在不具备自然通风条件的建筑物中扮演着至关重要的角色。该系统通过对建筑物内部进行适当的送风加压,有效地阻止了火灾...
【超级兔子加压板】是一款高效且易用的压缩与解压缩工具,它以其独特的算法和用户友好的界面,为用户提供了便捷的数据压缩和管理服务。在IT领域,压缩工具是必不可少的,尤其是在处理大量数据时,能够节省存储空间、...
由于加压过滤机是以压缩空气为媒介,通过滤饼两侧的压力差实现细粒精煤脱水,因而其在生产中普遍存在处理能力低、电能消耗大、环境影响大的问题。针对加压过滤机处理能力低的问题,梁北选煤厂在生产中发现由于入料粒度...
在文件的加压解压过程中,霍夫曼算法扮演了关键角色。 在霍夫曼编码中,首先需要统计源文件中每个字符的频率。字符频率越高,其对应的编码就越短。通过构建霍夫曼树,可以生成一个最小带权路径长度的二叉树,其中每...
浮选精煤加压过滤机脱水时,滤液返回到浮选系统会恶化浮选的分选,返回到循环水池会恶化循环水系统。为了合理处理加压过滤机滤液,改善滤液系统,根据选煤厂的工艺特点,提出了滤液分级回收工艺。在实施过程中根据滤液...
防烟加压送风系统送风量测试记录(二)
选煤厂在进行煤炭处理的过程中,常常使用浮选精煤加压过滤机,而在这一过程中,入料泵的安全运行至关重要。然而,在实际操作中,由于各种原因,入料泵的安全问题时有发生,例如望峰岗选煤厂精煤加压过滤机入料泵就...
选煤厂浮选精煤加压过滤机滤液返回浮选使浮选系统煤泥水量增大,增大了浮选压力,而且大量细泥在浮选系统循环,恶化了浮选系统的分选效果。为合理处理滤液,改进煤泥水系统,提出了"浮选柱+快开压滤机"独立回收滤液的工艺...
以马脊梁选煤厂HBF-S120型加压过滤机为例,介绍了加压过滤机结构及工作原理,并对加压过滤机在使用中出现的加压仓仓压低、刮板输送机报警、上/下闸板开关不到位、上/下密封圈充/泄气超时、卸料仓充/放气超时等故障...
本文以西安某水厂的二次加压泵站恒压供水PLC监控系统为例,介绍了加压泵站恒压供水PLC控制系统的设计细节,包括系统的主要组成部分、功能与原理,以及加压泵站的恒压实现方式。 1. 系统主要组成部分 加压泵站恒压...
加压泵房工程施工设计方案.doc
加压求流法是电子工程领域中的一种电路分析方法,主要应用于模拟电路设计与分析,尤其是在教学和实验环境中。Multisim是一款强大的电路仿真软件,它为工程师和学生提供了直观的界面以及广泛的元器件库,使得加压求流...
GPJ-120加压过滤机是一种应用于选煤厂的重要设备,主要用于煤浆的分离和脱水作业。它的工作原理主要基于过滤原理,即利用固体颗粒与液体之间的物理性质差异,通过施加压力使煤浆中的固体颗粒通过过滤介质形成滤饼,...
防烟加压送风系统送风量测试记录(三)