当前位置: 首页 > news >正文

电商数据网站服务营销7p理论

电商数据网站,服务营销7p理论,纪检委网站的建设,上海宝山区做网站的概述 IO流本质 I/O表示Input/Output,即数据传输过程中的输入/输出,并且输入和输出都是相对于内存来讲Java IO(输入/输出)流是Java用于处理数据读取和写入的关键组件常见的I|O介质包括 文件(输入|输出)网络(输入|输出)键盘(输出)显示器(输出)使用场景 文件拷贝(File&…

概述

IO流本质
  • I/O表示Input/Output,即数据传输过程中的输入/输出,并且输入和输出都是相对于内存来讲
  • Java IO(输入/输出)流是Java用于处理数据读取和写入的关键组件
  • 常见的I|O介质包括
    • 文件(输入|输出)
    • 网络(输入|输出)
    • 键盘(输出)
    • 显示器(输出)
  • 使用场景
    • 文件拷贝(File)
    • 文件上传下载
    • Excel导入导出
    • 网络程序中数据传输(聊天工具)

分类

概述

Java中几乎所有的IO操作都需要使用java.io包;流可以通过如下方式进行分类

  • 按流向分(输入输出过程通常都是站在程序角度考虑)
    • 输入流(Input)
    • 输出流(Output)
  • 按流的处理类型分
    • 字节流(byte): 字节是计算机存储容量的基本单位(Byte),1B=8b,二进制中占8位
    • 字符流(char): 字符是文字或符号的统称

        注意:字节流对于什么类型的文件都可以读取,如二进制类型的文件(图片,视频,音频,压缩                    文件等),而字符流用于读取文本类型文件

  • 按流的功能来分
    • 节点流(直接跟输入输出源交互)
    • 处理流(对其他流包装的流:包装流)

字节流(InputStream && OutputStream)

InputStream 类图
OutputStream类图

日常开发过程中常用的字节流:

FileInputStream && FileOutputStream: 常用来实现文件复制/拷贝

BufferedInputStream && BufferedOutputStream: 为了减少IO次数,提高读取效率

PrintStream:源自OutputStream,标准字节的打印输出流(日志框架的实现原理)

ZipOutputStream && ZipInputStream:用来进行文件压缩/文件解压

字符流(Reader && Writer)

Reader类图
Writer类图

日常开发过程中常用的字符流:

FileReader&&FileWriter:作用同FileInputStream && FileOutputStream

BufferedReader&&BufferedWriter:作用同BufferedInputStream && BufferedOutputStream,同时BufferedReader提供了按行读取文本的方法,方便文本处理

扩展: 我们知道字节流可以读取任意文件,为什么还要设计出字符流呢?

  • 对于字符文件,先作为字节传输->再转成字符,比较耗时
  • 对于字符文件,如果其中为中文,则容易乱码

设计模式

在IO流中使用了多种设计模式,包括如下:

适配器模式

适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作

Java IO中为了实现字符流和字节流之间的相互转换,设计了两个适配器的类,

InputStreamReader和OutputStreamWriter

InputStreamReader isr = new InputStreamReader(new FileInputStream(fileName), "UTF-8");
BufferedReader bufferedReader = new BufferedReader(isr);

装饰器模式

装饰器模式可以将新功能动态地附加于现有对象而不改变现有对象的功能。InputStream的子类FilterInputStream,OutputStream 的子类 FilterOutputStream,Reader 的子类 BufferedReader 以及 FilterReader,还有Writer的子类BufferedWriter、FilterWriter 以及 PrintWriter等,它们都是抽象装饰类。增强了子类对象的功能。

实践

ZipOutputStream&&FileOutputStream&&FileInputStream实现文件压缩

/*** 功能: 通过ZipOutputStream压缩文件,最后返回压缩包* @param files* @param fileName* @return*/
public File zipFiles(File[] files,String fileName) {File zipFile = null;FileOutputStream fosZipFile = null;ZipOutputStream zosZipFile = null; //压缩文件输出流try {zipFile = downloadAttachmentService.createFile("", fileName); //创建一个空的文件目录fosZipFile = new FileOutputStream(zipFile); //以文件流从内存中输出zosZipFile = new ZipOutputStream(fosZipFile); //以压缩流从内存中输出for (File file : files) {FileInputStream fis = new FileInputStream(file); //对每个文件创建输入流,读取文件到内存ZipEntry zipEntry = new ZipEntry(file.getName()); //ZipEntry用来创建压缩文件zosZipFile.putNextEntry(zipEntry); //加入需要压缩的文件byte[] bytes = new byte[1024];int length;while((length = fis.read(bytes)) >= 0) { //读取文件到内存zosZipFile.write(bytes, 0, length); //文件写入压缩流}fis.close();}} catch (IOException e) {e.printStackTrace();} finally { //关闭流try {zosZipFile.close();fosZipFile.close();} catch (IOException e) {e.printStackTrace();}}return zipFile; //返回压缩包
}
/*** @Title: createFile* @Description: 创建下载目录文件* @author Bierce* @param rootPath* @param filename* @return* @throws IOException*/
public File createFile(String rootPath, String filename) throws IOException {// Default root pathif (rootPath.isEmpty()) {rootPath = "download-cache";}File fRoot = new File(rootPath);if (!fRoot.exists() || !fRoot.isDirectory()) {fRoot.mkdirs();}// job sub pathString uuid = UUID.randomUUID().toString();String directoryJob = rootPath + File.separator + getClass().getSimpleName() + File.separator + uuid;//文件名称随机生成保证唯一File dirJob = new File(directoryJob);if (!dirJob.exists() || !dirJob.isDirectory()) {dirJob.mkdirs();}String filePath = directoryJob + File.separator + filename;File file = new File(filePath);if (!file.exists()) {file.createNewFile();}return file;
}
//-----------------扩展方法-文件名去重保证唯一-----------------
/*** @Title: snFileName_noUIID* @Description: 去除sn文件UUID以及解决sn文件名重复问题* @author Bierce* @return file*/
public File snFileName_noUIID(String fileParentPath,String snFileName,File file){//snFileName:完整文件名 sn-xx..UUID..xx.xlsx//snFileName_delUIID: sn.xlsx//snFileName_prefix: sn//suffix:xlsx//文件名:如sn.xlsxString snFileName_delUIID = snFileName.substring(0,snFileName.length() - 42) + ".xlsx";//42是固定长度:UUID+.xlsxString snFileName_prefix = snFileName.substring(0,snFileName.length() - 42);//文件前缀String suffix = snFileName.substring(snFileName.lastIndexOf("."));//文件后缀:.xlsxtry {file = new File(fileParentPath + snFileName_delUIID);//设置sn文件所在目录为计划交接文件目录下int i = 1;//对于同名SN文件情况重新命名while(file.exists()) {//保证文件夹下不存在同名文件String newFileName = snFileName_prefix + "(" + i + ")" + suffix;String parentPath = file.getParent();file = new File(parentPath + File.separator + newFileName);i++;}file.createNewFile();//new File 只是创建了一个File对象,还需要调用createNewFile()方法才能实现文件的成功创建} catch (Exception e) {}return file;
}
http://www.hengruixuexiao.com/news/20659.html

相关文章:

  • 怎么用WordPress快速建站网络推广与营销
  • 做商品网站数据库有哪些哈尔滨网站制作软件
  • 沈阳做网站的公司seo排名点击软件
  • 广州做创客教室的厂家网站北京网站seo公司
  • php商城网站开发论文百度竞价规则
  • 黄页网站怎么做 获取企业信息灰色关键词排名代做
  • 各类设计型网站手机网站
  • 做 爱 网站小视频下载南昌seo网站推广
  • 公司建网站多少钱一个百度系app有哪些
  • 网站404怎么做的北京网站制作设计
  • wordpress 链接 css有实力的网站排名优化软件
  • 海珠区建网站公司2023年8月份新冠病毒
  • WordPress主题安全检查seo排名赚app是真的吗
  • 摄影网站哪个最好免费b站动漫推广网站2023
  • 莲花网站seo基础知识考试
  • 做旅游网站的首页的图片网络推广运营公司
  • 网站建设与网页设计大数据营销系统多少钱
  • 网站建设报价单 下载江门网站优化公司
  • xyz域名做网站好么互联网营销平台有哪些
  • 公众号购买常用的seo工具推荐
  • 大型门户类网站抚州seo外包
  • 后端网站开发建一个网站需要多少钱?
  • 北京 网站建设 京icp免费可用的网站源码
  • 中山手机网站设计百度推广开户怎么开
  • 东莞网站定制怎么制作属于自己的网址
  • 网站后台banner怎么换网站seo站群软件
  • java网站设计广告公司
  • 做办公室的网站无锡网站建设优化公司
  • 新浪云sae免费wordpress网站网站制作教程
  • 如何自己免费建网站深圳专业建站公司