4款Mac解压缩软件,常见且实用

解压缩软件在Mac办公中是必不可少的,不仅能够节省时间和内存,更能提升传输效率。虽然Mac自带的解压缩软件归档实用工具可以对zip文件进行解压,但是对于他格式文件就无能为力了。

因此,想要满足多类型文件解压缩需求,可以试试以下这4款Mac工具。

一、KeKa

Keka是一款macOS文件解压缩工具,体积小速度快,直接拖拽文件至程序坞中的Keka图标即可解压。

支持的压缩格式包含7Z、ZIP、TAR、GZIP、BZIP2、XZ、LZIP、DMG、ISO;支持的提取格式有7Z、ZIP、ZIPX、RAR、TAR、GZIP、BZIP2、XZ、LZIP、DMG、ISO、LZMA、EXE等24种格式。

Keka还支持加密压缩,将文件加密后压缩,解压时就需要输入密码,这样一来,可以保护你的隐私信息了。

需要提醒的是,keka的图标是一条小虫子,如果这个会让你引起不适,那可以另择他选。

二、eZip

eZip for Mac是Mac平台上的一款非常棒的简洁易用的免费解压缩软件。eZip for Mac中文版查看、编辑压缩包,无需解压,按空格键即可进入预览模式预览,支持 Mojave 深色模式。您的mac还没有安装解压缩软件吗?不如试一试这一款吧!

2019-06-1312.6 MB简体中文

三、BetterZip

BetterZip是一款下载率比较高的付费Mac解压缩工具,无需解压就可以快速预览。

支持打开并提取ZIP,TAR,TGZ,TBZ,TXZ,7-ZIP,RAR,DMG等超过30种存档格式。

且支持新系统Mac OS 10.15 Catalina,采用强大的 AES-256 加密,保护用户数据。

四、Archiver

Archiver是一款分割合并解压缩工具,使用Archiver,您可以提取RAR,StuffIt,Zip,7zip以及许多其他流行的存档文件格式。

通过拖放文件即可实现压缩,且支持设定解压密码。

另外,当你的文件太大时,使用Archiver,可以实现文件分为任意大小的较小文件,通过压缩拆分文件挤出部分额外空间

本文转载于网络 如有侵权请联系删除

相关文章

  • C++系列笔记(十二)

    【导读】《21天学通C++》这本书通过大量精小短悍的程序详细而全面的阐述了C++的基本概念和技术,包括管理输入/输出、循环和数组、面向对象编程、模板、使用标准模板库以及创建C++应用程序等。这些内容被组织成结构合理、联系紧密的章节,每章都可在1小时内阅读完毕,都提供了示例程序清单,并辅以示例输出和代码分析,以阐述该章介绍的主题。本文是系列笔记的最后一篇,欢迎各位阅读指正!异常处理使用try和catch捕获异常  try和catch是最重要的C++关键字。要捕获语句可能引发的异常,可将它们放在try块中,并使用catch块对try块可能引发的异常进行处理:voidsomefunc() { try { int*pNumber=newint; *pNumber=999; deletepNumber; } catch(……)//catchesallexceptions { cout<<"Exceptioninsomefunc(),quitting"<<endl; } }复制catch(……)捕获未被其他catch块显示捕获的所有异常。 自定义异常类应

  • 第一篇:JSX 代码是如何“摇身一变”成为 DOM 的?

    时下虽然接入JSX语法的框架越来越多,但与之缘分最深的毫无疑问仍然是React。2013年,当React带着JSX横空出世时,社区曾对JSX有过不少的争议,但如今,越来越多的人面对JSX都要说上一句“真香”!本课时我们就来一起认识下这个“真香”的JSX,聊一聊“JSX代码是如何‘摇身一变’成为DOM的”。关于JSX的3个“大问题”在日常的React开发工作中,我们已经习惯了使用JSX来描述React的组件内容。关于JSX语法本身,相信每位React开发者都不陌生。这里我用一个简单的React组件,来帮你迅速地唤醒自己脑海中与JSX相关的记忆。下面这个组件中的render方法返回值,就是用JSX代码来填充的:importReactfrom"react"; importReactDOMfrom"react-dom"; classAppextendsReact.Component{ render(){ return( <divclassName="App"> <h1className="title&qu

  • 设计体验,关乎情感,始于内心

    如何设计好的产品?这是无数人时刻思考的问题。近年来,体验设计的价值被不断证实,典型的例子就是Apple近些年不断推出令人喜爱的产品,不仅造就了企业成长的传奇,也深刻地改变了人类的生活和沟通的方式,企业家更加关注体验设计和创新,寻找企业新的增长点。要解答“如何设计好的产品”这样的命题首先要回答的问题是“什么是好的设计”?很多人想到好的设计,就会联想到悦目精妙的物理形态。从汽车到鼠标,从时装到家具。这些设计不仅给人以视觉的愉悦感,并且也具有很好的使用特性,堪称好的设计。但是好的设计是否就可以定义为好看和好用呢?换句话说,如果能够将产品做到好看好用,是否就达到了体验的极致? 美国的著名学者唐纳德诺曼是一位心理学家,他从心理的角度去诠释好的设计,提出了情感化设计的概念。体验的本质是人心灵的感受。一个产品被人感知,被人理解,激发出情感的共鸣,是好的设计的更高的境界。这种境界超出好看和好用的需求,从一个更加深刻的层面给人以震撼。当我们对设计的思考从表及里,达到情感的深层,我们会看到更多的设计空间和灵感的来源,设计的概念也同时超越物理形态的局限。实际上设计作为学科,已经从物理形态的设计,逐渐扩展到软

  • Philip S. Yu 团队最新综述!社区发现的深度学习方法:进展、挑战、机遇

    编者按:社区发现(CommunityDetection)是网络科学领域中一个经久不衰的重要问题。 随着深度学习的发展,研究者们逐渐从传统的统计推断和谱聚类等方法中解放了出来。那么,深度学习时代的社区发现工作有哪些特点,研究者们遇到了哪些挑战,有哪些前景光明的研究方向呢?近日,IJCAI2020上发表的一篇Survey文章,完整阐释了这一研究方向的方法、挑战和机遇。论文来自数据挖掘领域大牛PhilipS.Yu团队。撰文|MrBear修改|刘凡桢编辑|贾伟网络中的社区指的是一组由节点以及与其相连的边紧密地形成的实体。社区发现旨在遵循「社区中的节点紧密相连,不同社区间的节点稀疏相连」的规则对实体集合进行聚类。包括谱聚类、统计推断在内的传统社区发现方法在处理高维图数据时存在计算速度的问题。因此,近年来,深度学习方法被广泛地应用。论文标题:DeepLearningforCommunityDetection:Progress,ChallengesandOpportunities 在本文中,作者特别调研了社区发现的深度学习方法这一研究领域中的最新进展,并根据用到的深度神经网络、深度图嵌入、图神经网络

  • Mac系统安装Python3.5

    使用Homebrew安装python3.5打开终端,利用ruby语句安装Homebrew,Mac系统下默认安装了ruby  ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)" 输入brew-v检验是否安装成功,若输出版本信息,则安装成功。 输入brewinstallpython3安装完成后,输入python3,此时python的进入了交互式环境,在提示符>>>后可以输入python语句。    Note:Mac自带了python2.X的执行环境,如果输入python,则进入了python2的交互式环境,两个版本不兼容如果出现上图报错,使用chown语句更改/usr/local/lib/pkgconfig的拥有权限后再执行install命令即可

  • 软件需求设计UML全程实例剖析幻灯片(2-愿景)201904更新

  • TCP拥塞控制基本原理

    版权声明:本文为博主原创文章,转载请注明博客地址:https://blog.csdn.net/zy010101/article/details/90475458从拥塞控制原理来看,我们有两种方案来解决TCP拥塞控制问题。但是IP层并不提供显式的网路拥塞控制反馈。TCP采用的是方式是让每一个发送方根据感受的网络拥塞程度来限制其向连接发送流量的速率。拥塞控制TCP拥塞控制常被称为加性增,乘性减。这样的方式能够在拥塞的情形下,快速减少发送速率,从而避免严重的拥塞现象出现。慢启动TCP连接在刚开始建立的阶段,发送速率起始慢,TCP希望能够快速找到可以的带宽数。在慢启动阶段以指数增长。如下图所示。图中蓝色的曲线是TCP在早期的时候采用的策略,黑色的曲线是后来改进的TCP。TCP连接中,收到3次冗余ACK远比等待时间超时下的网络状况好的多,当收到3次冗余ACK的时候,就是像上图黑色曲线部分;当发生timeout事件的时候,congWin变为1.快速恢复当拥塞发生的时候,那么TCP应当降低速率。如果发生的事件是超时事件,那么如上图所示,降低到1,为了快速恢复TCP速率。我们采用的策略是重启慢启动,让

  • 一文看尽深度学习这半年

    原作:RossTaylor 岳排槐编译整理 量子位出品|公众号QbitAI追踪深度学习这样一个大热领域的进展并不容易。为了解决这个问题,年初我和RobertStojnic搞了PapersWithCode,这个网站把深度学习的研究论文和代码结合在一起。这也能让我们有机会鸟瞰这个领域,包括研究趋势、热门框架以及哪些技术正受到青睐。这篇博文就用来分享这些。以下的趋势总结,都来自于网站的数据。我们一起来总结下2018下半年的关键突破,以及深度学习社群的未来之路。最热模型:BERT、vid2vid和graph_netsGoogleAI十月发布的BERT论文,引发了深度学习界的强烈关注。这篇论文提出了一种深度双向Transformer模型。BERT刷新了11种NLP任务的最佳表现,包括斯坦福问答数据集(SQuAD)。 GoogleAI随后开源了这篇论文的代码,一个月的时间,BERT在GitHub上已经获得8000多次的标星,而且还在快速增加。论文: https://arxiv.org/abs/1810.04805GitHub地址: https://github.com/google-researc

  • 入门 | 无人驾驶汽车系统基本框架梳理

    作者简介:申泽邦(AdamShan),兰州大学在读硕士研究生,主攻无人驾驶,深度学习;兰大未来计算研究院无人车团队骨干,在改自己的无人车,参加过很多无人车Hackathon,喜欢极限编程。无人驾驶系统的核心可以概述为三个部分:感知(Perception),规划(Planning)和控制(Control),这些部分的交互以及其与车辆硬件、其他车辆的交互可以用下图表示:感知是指无人驾驶系统从环境中收集信息并从中提取相关知识的能力。其中,环境感知(EnvironmentalPerception)特指对于环境的场景理解能力,例如障碍物的位置,道路标志/标记的检测,行人车辆的检测等数据的语义分类。一般来说,定位(Localization)也是感知的一部分,定位是无人车确定其相对于环境的位置的能力。 规划是无人车为了某一目标而作出一些有目的性的决策的过程,对于无人驾驶车辆而言,这个目标通常是指从出发地到达目的地,同时避免障碍物,并且不断优化驾驶轨迹和行为以保证乘客的安全舒适。规划层通常又被细分为任务规划(MissionPlanning),行为规划(BehavioralPlanning)和动作规划(

  • 什么是 Cookie?

    Cookie什么是Cookie?先要了解HTTP是无状态的Web服务器,什么是无状态呢?一次对话完成后下一次对话完全不知道上一次对话发生了什么。如果在Web服务器中只是用来管理静态文件还好说,对方是谁并不重要,把文件从磁盘中读取出来发出去即可。但是随着网络的不断发展,比如电商中的购物车只有记住了用户的身份才能够执行接下来的一系列动作。所以此时就需要我们无状态的服务器记住一些事情。那么Web服务器是如何记住一些事情呢?既然Web服务器记不住东西,那么我们就在外部想办法记住,相当于服务器给每个客户端都贴上了一个小纸条。上面记录了服务器给我们返回的一些信息。然后服务器看到这张小纸条就知道我们是谁了。那么Cookie是谁产生的呢?Cookies是由服务器产生的。接下来我们描述一下Cookie产生的过程浏览器第一次访问服务端时,服务器此时肯定不知道他的身份,所以创建一个独特的身份标识数据,格式为key=value,放入到Set-Cookie字段里,随着响应报文发给浏览器。浏览器看到有Set-Cookie字段以后就知道这是服务器给的身份标识,于是就保存起来,下次请求时会自动将此key=value值

  • Atitit img hot click link 图像背景拉伸100%Map area trouble..So body backgrd img mode...is easy...No

    Atititimghotclicklink图像背景拉伸100% Maparea trouble.. Sobodybackgrdimgmode...iseasy... Note,,,userelatewitdhandheight... Marginleft,topetc... Firstverlayout,usediv。。 Thenperline,,useAtag,,dispaoyinline-blocktolayount <!DOCTYPEhtml> <html> <head> <title>..</title> </head> <bodybackground=""style="background-repeat:no-repeat; background:url(h5_搜索.jpg); background-size:cover; background-repeat:no-repeat" > <!-- background-

  • js对象可扩展性和属性的四个特性(上)

    js对象可扩展性和属性的四个特性(上) 一、前言 再次花时间回顾一下基础,毕竟要想楼建的好,地基就要牢固,嘻嘻! 在开始之前需要具备对prototype、__proto__、constructor有一定得了解,可以看看我之前写的一篇文章=>通道 之前的用户管理系统已经差不多了,顺便加了个socket聊天的,但是由于做java后台的哪个朋友节奏跟不上来,所以即时聊天的后台就是node+socket-io写的,由于用户列表也涉及比较多的用户隐私问题,所以我设置了页面权限和接口权限,然后下面开放的几个账号就只能看到几个页面而已,哈哈。=>通道 体验账号1:账号:“123456”。密码:“123456” 体验账号2:账号:“123123”。密码:“123123” 二、目录 对象属性的四个特性 对象的可扩展性 删除属性 检测属性 枚举属性 属性的getter和setter 三、对象属性的四个特性 1、定义 1.1、什么是数据属性? 数据属性就是我们平常看到的对象普通属性。 复制 数据属性的特性为以下四种: 值(value) 可写性(writab

  • HTML+CSS页面练习——legend第七部分

    第七部分——news 简要介绍: 本部分利用<article>标签实现了一种卡片式效果。 页面效果: HTML代码: <sectionid="news"> <divclass="container"> <divclass="align"><iclass="icon-pencil-circled"></i></div> <h1>OurBlog</h1> <divclass="row"> <divclass="post"> <imgclass="img-news"src="img/blog_img-01.jpg"alt=""/> <divclass="inside"> <divclass="timer"> <pclass="post-date"><iclass="icon-calendar"></i>March17,2013</p> </div> <h2&

  • 灵动岛iPhone状态栏获得高度不对 iOS iPhone14pro iPhone14pro max状态栏获得高度不对

    之前的获得状态栏高度代码是 funckStatusBarHeight()->CGFloat{ varstatusBarHeight:CGFloat=0 if#available(iOS13.0,*){ letstatusManager=UIApplication.shared.windows.first?.windowScene?.statusBarManager statusBarHeight=statusManager?.statusBarFrame.height??20.0 }else{ statusBarHeight=UIApplication.shared.statusBarFrame.height } returnstatusBarHeight }复制   上面的代码,iPhone14之前手机获得状态栏高度都是正确的,刘海屏也没问题, 但是灵动岛手机有问题,获得高度是44是错误的。iPhone14proiPhone14promax状态栏高度应该是56。 应该用下面的代码解决这问题 funckStatusBarHeight()->CGFloat{

  • 对象集合,按照指定的字段排序

    importjava.util.ArrayList; importjava.util.Arrays; importjava.util.Collections; importjava.util.Comparator; importjava.util.List; publicclassDemo{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub List<String>names=Arrays.asList("peter","anna","mike","xenia"); Collections.sort(names,newComparator<String>(){ @Override publicintcompare(Stringa,Stringb){ returnb.compareTo(a); } }); System.out.println(names); List<Person>listPerson=newArrayList<>(); listPe

  • 电脑连不上手机热点问题

    电脑连不上手机热点,显示无法连接此网络 1,打开到此界面,选择设置新的连接或网络 2,选择手动连接到无线网络,下一步 输入网络名,如果显示网络名已存在,就另改一个网络名,再在手机上把网络名设置成所改的网络名即可,加密类型选择热点的加密类型。  

  • Python学习笔记13:异常处理

    Python学习笔记13:异常处理 在编程语言的学习中,异常处理往往是不起眼,但又没法舍弃的部分。 事实上,当时的C++老师说过:异常的诞生是为了增强程序的健壮性,能让程序在出错的时候自动恢复。但很遗憾的是,这种局面从未实现。 所以,不要奢望你学完异常就有一种强大的工具,能大幅度提升代码的健壮性。我更倾向于这是一个讲代码中的错误能集中起来展示和处理,并和正常的业务逻辑区分开的有用的工具,仅此而已。 异常非但没能完成让程序忽视错误正常运行的初衷,反而在某些情况下可能会屏蔽掉一些严重问题,给调试带来麻烦,所以我们使用的时候要谨慎,你需要明白你使用异常的必要性,以及后续如何处理异常。 基本语法 我们先来看下Python中异常的基本语法: defthrowExp(): raiseException() try: throwExp() except: print("catchaexception") 复制 如演示的那样,在函数throwExp中可以通过raise语句抛出一个异常。然后在外部使用try/except语句来捕获异常。 不要问我为啥这里不是throw和catch,我也很纳闷为何py

  • 改变字符串颜色从哪里开始截取改变颜色

      NSString*pricstr=@"价格:";   _pricelable.text=[NSStringstringWithFormat:@"%@%@",pricstr,drawmodel.shop_price];   //改变字符串颜色   NSMutableAttributedString*textColor=[[NSMutableAttributedStringalloc]initWithString:_pricelable.text];   NSRangerangel=[[textColorstring]rangeOfString:[_pricelable.textsubstringFromIndex:3]];   [textColoraddAttribute:NSForegroundColorAttributeNamevalue:[UIColorredColor]range:rangel];   [textColoraddAttri

  • 野指针

    一、什么是野指针 野指针:指向内存被释放的内存或者没有访问权限的内存的指针(非法访问)。野指针指向一个不确定的地址空间,或者指向的是一个确定的地址空间的,但引用空间的结果却是不可预知的。 与空指针不同,野指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。 危害: 使用野指针易因内存泄露出现段错误。 也可能未产生任何结果:有的时候,可能使用了一个野指针,虽然指向了一个未知的地址空间,但是这空间可以使用,而且该空间和程序中的其它变量空间没有交集,对野指针指向的空间进行了读写访问后,也不会对程序产生任何影响。 虽然如此,这种野指针也是必须要极力避免的,因为这个隐患很可能在后面的程序运行中,导致严重的错误,而且这种错误很难排查。严重时引发程序连环式错误,访问野指针产生的错误循环叠加,轻者程序结果严重扭曲,重者直接导致程序或者系统崩溃。     段错误就是地址错误,是指访问的内存超出了系统给这个程序所设定的内存空间 内存泄漏:一般指①访问已经释放的内存;②访问没有权限的内存。   二、

  • 小程序 网络请求

    另一篇比较完善 uni封装request请求     /** *requestPromise用于将wx.request改写成Promise方式 *@param:{string}myUrl接口地址 *@return:Promise实例对象 */ /**=====================================================================核心:接口文件====*/ varapiUrlList={ service:"https://***.com",//服务器 "账单明细":{ url:"/api/check/load.html", method:"POST"//提交方式 }, }; /**=====================================================================核心:网络请求====*/ functionmyAjax(api,data){ wx.showLoading({ title:'加载中', mask:true }); l

  • 学习JAVA遇到的难点总结

    1.Scanner对象 我们都知道使用”Scannerscanner=newScanner(System.in);“来进行输入,但如果我们只设置一个scanner对象, 即用来输入String型的数据,又用来输入int型的数据会怎样呢? 答案是出错!每一个Scanner对象只能用来输入一种类型的数据,想输入String就创建一个stringInput对象只用来输入 String数据。绝对不可以在用来输入其他数据! 我们也可以通过Stringname=newScanner(System.in).next();的方法进行输入,每要输入一个数据,就新建 一个Scanner对象。 2.关于static 最基本的我们都知道static方法只能引用static型的数据,而实例方法既能引用一般数据,也能引用static数据。 下面两个例子是我在编程中遇到的关于static问题。 例1: 我们要创建一个test类,可以时刻追踪到test类创建了多少个对象。 classtest{ intsum=0; test(){ ++sum;System.out.ptintln("test类共创建了"+su

相关推荐

推荐阅读