2024年Java最全通俗易懂地教你用Java实现文件压缩,Java爬虫爬取视频

总结

面试前的“练手”还是很重要的,所以开始面试之前一定要准备好啊,不然也是耽搁面试官和自己的时间。

我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。

面试题及解析总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

大厂面试场景

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

知识点总结

三年Java开发,刚从美团、京东、阿里面试归来,分享个人面经

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

========================================================================

在这里插入图片描述

压缩的时候如果没有指定文件的修改时间,则会以系统当前的时间做为修改时间,我们希望和原文件的修改时间保持一致。

ZipEntry就代表了压缩文件里面的文件,所以要修改压缩文件里面的文件的信息时就可以找ZipEntry就行了。如下:


zipEntry.time = rawfile.lastModified()



当然,文件还有创建时间和访问时间,在文件上右击并选择属性即可查看,如下:

在这里插入图片描述

百度了一下,这些属性是可以获取到的,JDK本身有提供这样的方法,如下:


BasicFileAttributes att = Files.readAttributes(p, BasicFileAttributes.class);

att.creationTime(); 

att.lastAccessTime(); 

att.lastModifiedTime();



但是这些方法在Android中被阉割掉了,也无所谓了,而且在Windows电脑上显示的时间也是修改时间,如下:

在这里插入图片描述

就算不阉割这些方法也没有用,据说在lunix系统下创建的文件只有最后修改时间,是没有创建时间这个属性的(不知道是不是真的)。如果说有公司有要求一定要知道文件的创建时间,解决方案也很简单,在创建文件的时候,把当前时间加到文件名上即可。

设置压缩级别

=====================================================================

在这里插入图片描述

如上图,压缩配置有速度最快、体积最小,如果选择自定义还会看到有存储、最快、较快、标准、较好、最好等级别,最好的意思是压缩的最厉害,压缩的文件最小,但是需要的压缩时间也是最长的,在代码中,写入压缩的数据是通过ZipOutputStream流来写的,所以这个类要知道压缩级别,找这个类上的方法即可,如下:


zipOutputStream.setLevel(Deflater.NO_COMPRESSION)       // 无压缩

zipOutputStream.setLevel(Deflater.BEST_SPEED)       // 最快的压缩

zipOutputStream.setLevel(Deflater.BEST_COMPRESSION) // 最好的压缩



setLevel接收的参数是int类型,取值范围是0 ~ 9,0是无压缩,就是可以把1个或几个文件打包到一个zip文件中,但是文件数据没有进行压缩,1 ~ 9就是压缩等级,9代表最好的压缩等级,需要的压缩时间也就最长。这个一般不用设置,用默认的就挺好了。我项目中使用了最好的压缩,因为我压缩的是一些日记文件,内容都不算大,虽然选了最了最好的压缩,但是时间也很快,压缩的小一些,时间是长了一点,但是上传的时间也快了一点。

设置压缩文件的注释

========================================================================


zipOutputStream.setComment(String comment) 



效果如下:

在这里插入图片描述

为什么不写中文?因为会有中文乱码,怎么解决中文乱码呢,这个我懒得管了,公司也没要求要加这个,所以真实开发就是这样的,用到什么学什么,用不到的,不学也罢!

把多个文件压缩到一个文件中

============================================================================


zipOutputStream.putNextEntry(zipEntry)

zipOutputStream.write(bytes)

zipOutputStream.closeEntry()



关键就是putNextEntry就代表往压缩文件里放一个文件,然后write开始写入这个文件的内容,写完之后调用closeEntry,再来第二个文件时就重复一样的流程即可,完整示例如下:


fun main() {

    val rawfile_1 = File("C:\\Users\\even\\Desktop\\logs\\压缩示例.txt")

    val rawfile_2 = File("C:\\Users\\even\\Desktop\\logs\\Hello.txt")

    val zipfile = File("C:\\Users\\even\\Desktop\\logs\\压缩示例.zip")

    val rawFileList = listOf(rawfile_1, rawfile_2)



    ZipOutputStream(zipfile.outputStream()).use { zos ->

        rawFileList.forEach { rawFile ->

            zos.putNextEntry(ZipEntry(rawFile.name))

            rawFile.inputStream().use { ins ->

                val array = ByteArray(8192)

                var len: Int

                while (ins.read(array).also { len = it } != -1) {

                    zos.write(array, 0, len)

                }

            }

            zos.closeEntry()

        }

    }

}



效果如下:

在这里插入图片描述

递归压缩一个目录下的所有内容

=============================================================================

相信有了上面的基础知识,你要完成递归压缩一个目录下的所有内容,应该也是简简单单了,公司里没这需求,我也懒得写代码去实现了。

OK,就讲到这了,虽然类上面还有很多其他方法,但是对于我目前项目的需求来说已经够用了,我也懒得去研究那些方法干嘛用的,人生苦短,该懒的时候就要懒!

[

创作打卡挑战赛

赢取流量/现金/CSDN周边激励大奖

最后

这份清华大牛整理的进大厂必备的redis视频、面试题和技术文档

祝大家早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

image.png

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

早日进入大厂,拿到满意的薪资和职级~~~加油!!

感谢大家的支持!!

[外链图片转存中…(img-NyzsasCt-1714898127387)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值