精华内容
下载资源
问答
  • .ps后缀文件打开

    2020-08-17 10:32:54
    ps后缀文件就是Postscript格式。 打开工具有两个开源软件:evince和Ghostscript, 推荐用evince,像pdf一样查看,很方便。 evince evince开源软件,支持PDF, Postscript, DJVU, TIFF, DVI, DOC, ABW, PPS, PPT, ODT,...

    ps后缀文件就是Postscript格式。

    打开工具有两个开源软件:evince和Ghostscript,
    推荐用evince,像pdf一样查看,很方便。

    evince

    evince开源软件,支持PDF, Postscript, DJVU, TIFF, DVI, DOC, ABW, PPS, PPT, ODT, ODS, ODP, ODG

    ubuntu中默认安装有evince软件可以直接打开。
    下载地址
    https://wiki.gnome.org/Apps/Evince/Downloads
    windows版本下载地址
    http://www.skycn.com/soft/appid/7887.html
    这里下载的evince_2.32.0.145.msi可用。
    https://evince.en.softonic.com/
    这个版本打开我的.ps文件直接会崩溃。

    Ghostscript

    https://www.ghostscript.com/download/gsdnld.html
    下载开源版的Ghostscript AGPL Release
    ——windows环境
    或者直接搜索Ghostscript下载

    打开Ghostscript后,将ps文件拖进去就打开了,回车下一页

    展开全文
  • 打开ps后缀文件,免费提供 打开ps后缀文件,免费提供 打开ps后缀文件,免费提供
  • 后缀PS文件的阅读器

    2009-11-27 14:36:46
    这是一个ps文件阅读器的打包文件,里面共有两个部分,分别安装后就可以正常使用了,祝你使用愉快!
  • .less为后缀文件什么

    千次阅读 多人点赞 2018-05-07 17:15:00
    .less为后缀文件什么 一、总结 1、less是什么:LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS 的编写,并且降低了 CSS 的维护成本...

    .less为后缀的文件是什么

    一、总结

    1、less是什么LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能大大简化了 CSS 的编写,并且降低了 CSS 的维护成本,就像它的名称所说的那样,LESS 可以让我们用更少的代码做更多的事情

    2、为什么有lessCSS 是一门非程序式语言,CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用

    3、less最最最最最最简单实例:使用@符号来定义变量

    清单 1. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    @color: #4D926F; 
     
    #header {
      color: @color;
    }
    h2 {
      color: @color;
    }

    经过编译生成的 CSS 文件如下:

    清单 2. CSS 文件
    1
    2
    3
    4
    5
    6
    #header {
      color: #4D926F
    }
    h2 {
      color: #4D926F; 
    }

     

     

    二、LESS CSS 框架简介

    简介

    CSS(层叠样式表)是一门历史悠久的标记性语言,同 HTML 一道,被广泛应用于万维网(World Wide Web)中。HTML 主要负责文档结构的定义,CSS 负责文档表现形式或样式的定义。

    作为一门标记性语言,CSS 的语法相对简单,对使用者的要求较低,但同时也带来一些问题:CSS 需要书写大量看似没有逻辑的代码,不方便维护及扩展,不利于复用,尤其对于非前端开发工程师来讲,往往会因为缺少 CSS 编写经验而很难写出组织良好且易于维护的 CSS 代码,造成这些困难的很大原因源于 CSS 是一门非程序式语言,没有变量、函数、SCOPE(作用域)等概念。LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能大大简化了 CSS 的编写,并且降低了 CSS 的维护成本,就像它的名称所说的那样,LESS 可以让我们用更少的代码做更多的事情

    LESS 原理及使用方式

    本质上,LESS 包含一套自定义的语法及一个解析器,用户根据这些语法定义自己的样式规则,这些规则最终会通过解析器,编译生成对应的 CSS 文件。LESS 并没有裁剪 CSS 原有的特性,更不是用来取代 CSS 的,而是在现有 CSS 语法的基础上,为 CSS 加入程序式语言的特性。下面是一个简单的例子:

    清单 1. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    @color: #4D926F;
     
    #header {
      color: @color;
    }
    h2 {
      color: @color;
    }

    经过编译生成的 CSS 文件如下:

    清单 2. CSS 文件
    1
    2
    3
    4
    5
    6
    #header {
      color: #4D926F;
    }
    h2 {
      color: #4D926F;
    }

    从上面的例子可以看出,学习 LESS 非常容易,只要你了解 CSS 基础就可以很容易上手。

    LESS 可以直接在客户端使用,也可以在服务器端使用。在实际项目开发中,我们更推荐使用第三种方式,将 LESS 文件编译生成静态 CSS 文件,并在 HTML 文档中应用。

    客户端

    我们可以直接在客户端使用 .less(LESS 源文件),只需要从 http://lesscss.org下载 less.js 文件,然后在我们需要引入 LESS 源文件的 HTML 中加入如下代码:

    1
    < link rel = "stylesheet/less" type = "text/css" href = "styles.less" >

    LESS 源文件的引入方式与标准 CSS 文件引入方式一样:

    1
    < link rel = "stylesheet/less" type = "text/css" href = "styles.less" >

    需要注意的是:在引入 .less 文件时,rel 属性要设置为“stylesheet/less”。还有更重要的一点需要注意的是:LESS 源文件一定要在 less.js 引入之前引入,这样才能保证 LESS 源文件正确编译解析。

    服务器端

    LESS 在服务器端的使用主要是借助于 LESS 的编译器,将 LESS 源文件编译生成最终的 CSS 文件,目前常用的方式是利用 node 的包管理器 (npm) 安装 LESS,安装成功后就可以在 node 环境中对 LESS 源文件进行编译。

    在项目开发初期,我们无论采用客户端还是服务器端的用法,我们都需要想办法将我们要用到的 CSS 或 LESS 文件引入到我们的 HTML 页面或是桥接文件中,LESS 提供了一个我们很熟悉的功能— Importing。我们可以通过这个关键字引入我们需要的 .less 或 .css 文件。 如:

    @import “variables.less”;

    .less 文件也可以省略后缀名,像这样:

    @import “variables”;

    引入 CSS 同 LESS 文件一样,只是 .css 后缀名不能省略。

    使用编译生成的静态 CSS 文件

    我们可以通过 LESS 的编译器,将 LESS 文件编译成为 CSS 文件,在 HTML 文章中引入使用。这里要强调的一点,LESS 是完全兼容 CSS 语法的,也就是说,我们可以将标准的 CSS 文件直接改成 .less 格式,LESS 编译器可以完全识别。

    语法

    变量

    LESS 允许开发者自定义变量,变量可以在全局样式中使用,变量使得样式修改起来更加简单。

    我们可以从下面的代码了解变量的使用及作用:

    清单 3 LESS 文件
    1
    2
    3
    4
    5
    @border-color : #b5bcc7;
     
    .mythemes tableBorder{
       border : 1px solid @border-color;
    }

    经过编译生成的 CSS 文件如下:

    清单 4. CSS 文件
    1
    2
    3
    .mythemes tableBorder {
      border: 1px solid #b5bcc7;
    }

    从上面的代码中我们可以看出,变量是 VALUE(值)级别的复用,可以将相同的值定义成变量统一管理起来。

    该特性适用于定义主题,我们可以将背景颜色、字体颜色、边框属性等常规样式进行统一定义,这样不同的主题只需要定义不同的变量文件就可以了。当然该特性也同样适用于 CSS RESET(重置样式表),在 Web 开发中,我们往往需要屏蔽浏览器默认的样式行为而需要重新定义样式表来覆盖浏览器的默认行为,这里可以使用 LESS 的变量特性,这样就可以在不同的项目间重用样式表,我们仅需要在不同的项目样式表中,根据需求重新给变量赋值即可。

    LESS 中的变量和其他编程语言一样,可以实现值的复用,同样它也有生命周期,也就是 Scope(变量范围,开发人员惯称之为作用域),简单的讲就是局部变量还是全局变量的概念,查找变量的顺序是先在局部定义中找,如果找不到,则查找上级定义,直至全局。下面我们通过一个简单的例子来解释 Scope。

    清单 5. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @width : 20px;
    #homeDiv {
       @width : 30px;
       #centerDiv{
           width : @width;// 此处应该取最近定义的变量 width 的值 30px
                  }
    }
    #leftDiv {
         width : @width; // 此处应该取最上面定义的变量 width 的值 20px
     
    }

    经过编译生成的 CSS 文件如下:

    清单 6. CSS 文件
    1
    2
    3
    4
    5
    6
    #homeDiv #centerDiv {
      width: 30px;
    }
    #leftDiv {
      width: 20px;
    }

    Mixins(混入)

    Mixins(混入)功能对用开发者来说并不陌生,很多动态语言都支持 Mixins(混入)特性,它是多重继承的一种实现,在 LESS 中,混入是指在一个 CLASS 中引入另外一个已经定义的 CLASS,就像在当前 CLASS 中增加一个属性一样。

    我们先简单看一下 Mixins 在 LESS 中的使用:

    清单 7. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 定义一个样式选择器
      .roundedCorners(@radius:5px) {
      -moz-border-radius: @radius;
      -webkit-border-radius: @radius;
      border-radius: @radius;
      }
      // 在另外的样式选择器中使用
      #header {
      .roundedCorners;
      }
      #footer {
      .roundedCorners(10px);
      }

    经过编译生成的 CSS 文件如下:

    清单 8. CSS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #header {
    -moz-border-radius:5px;
    -webkit-border-radius:5px;
    border-radius:5px;
    }
    #footer {
    -moz-border-radius:10px;
    -webkit-border-radius:10px;
    border-radius:10px;
    }

    从上面的代码我们可以看出:Mixins 其实是一种嵌套,它允许将一个类嵌入到另外一个类中使用,被嵌入的类也可以称作变量,简单的讲,Mixins 其实是规则级别的复用。

    Mixins 还有一种形式叫做 Parametric Mixins(混入参数),LESS 也支持这一特性:

    清单 9. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    // 定义一个样式选择器
      .borderRadius(@radius){
      -moz-border-radius: @radius;
      -webkit-border-radius: @radius;
      border-radius: @radius;
      }
      // 使用已定义的样式选择器
      #header {
      .borderRadius(10px); // 把 10px 作为参数传递给样式选择器
      }
      .btn {
      .borderRadius(3px);// // 把 3px 作为参数传递给样式选择器
     
      }

    经过编译生成的 CSS 文件如下:

    清单 10. CSS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #header {
    -moz-border-radius: 10px;
    -webkit-border-radius: 10px;
    border-radius: 10px;
    }
    .btn {
    -moz-border-radius: 3px;
    -webkit-border-radius: 3px;
    border-radius: 3px;
    }

    我们还可以给 Mixins 的参数定义一人默认值,如

    清单 11. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    .borderRadius(@radius:5px){
      -moz-border-radius: @radius;
      -webkit-border-radius: @radius;
      border-radius: @radius;
      }
      .btn {
      .borderRadius;
      }

    经过编译生成的 CSS 文件如下:

    清单 12. CSS 文件
    1
    2
    3
    4
    5
    .btn {
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
    border-radius: 5px;
    }

    像 JavaScript 中 arguments一样,Mixins 也有这样一个变量:@arguments。@arguments 在 Mixins 中具是一个很特别的参数,当 Mixins 引用这个参数时,该参数表示所有的变量,很多情况下,这个参数可以省去你很多代码。

    清单 13. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    .boxShadow(@x:0,@y:0,@blur:1px,@color:#000){
    -moz-box-shadow: @arguments;
    -webkit-box-shadow: @arguments;
    box-shadow: @arguments;
    }
    #header {
    .boxShadow(2px,2px,3px,#f36);
    }

    经过编译生成的 CSS 文件如下:

    清单 14. CSS 文件
    1
    2
    3
    4
    5
    #header {
    -moz-box-shadow: 2px 2px 3px #FF36;
    -webkit-box-shadow: 2px 2px 3px #FF36;
    box-shadow: 2px 2px 3px #FF36;
    }

    Mixins 是 LESS 中很重要的特性之一,我们这里也写了很多例子,看到这些例子你是否会有这样的疑问:当我们拥有了大量选择器的时候,特别是团队协同开发时,如何保证选择器之间重名问题?如果你是 java 程序员或 C++ 程序员,我猜你肯定会想到命名空间 Namespaces,LESS 也采用了命名空间的方法来避免重名问题,于是乎 LESS 在 mixins 的基础上扩展了一下,看下面这样一段代码:

    清单 15. LESS 文件
    1
    2
    3
    4
    #mynamespace {
    .home {...}
    .user {...}
    }

    这样我们就定义了一个名为 mynamespace 的命名空间,如果我们要复用 user 这个选择器的时候,我们只需要在需要混入这个选择器的地方这样使用就可以了。#mynamespace > .user。

    嵌套的规则

    在我们书写标准 CSS 的时候,遇到多层的元素嵌套这种情况时,我们要么采用从外到内的选择器嵌套定义,要么采用给特定元素加 CLASS 或 ID 的方式。在 LESS 中我们可以这样写:

    清单 16. HTML 片段
    1
    2
    3
    4
    5
    6
    7
    < div id = "home" >
    < div id = "top" >top</ div >
    < div id = "center" >
    < div id = "left" >left</ div >
    < div id = "right" >right</ div >
    </ div >
    </ div >
    清单 17. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #home{
       color : blue;
       width : 600px;
       height : 500px;
       border:outset;
       #top{
            border:outset;
            width : 90%;
       }
       #center{
            border:outset;
            height : 300px;
            width : 90%;
            #left{
              border:outset;
              float : left;
      width : 40%;
            }
            #right{
              border:outset;
              float : left;
      width : 40%;
            }
        }
    }

    经过编译生成的 CSS 文件如下:

    清单 18. CSS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #home {
      color: blue;
      width: 600px;
      height: 500px;
      border: outset;
    }
    #home #top {
      border: outset;
      width: 90%;
    }
    #home #center {
      border: outset;
      height: 300px;
      width: 90%;
    }
    #home #center #left {
      border: outset;
      float: left;
      width: 40%;
    }
    #home #center #right {
      border: outset;
      float: left;
      width: 40%;
    }

    从上面的代码中我们可以看出,LESS 的嵌套规则的写法是 HTML 中的 DOM 结构相对应的,这样使我们的样式表书写更加简洁和更好的可读性。同时,嵌套规则使得对伪元素的操作更为方便。

    清单 19. LESS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    a {
      color: red;
      text-decoration: none;
      &:hover {// 有 & 时解析的是同一个元素或此元素的伪类,没有 & 解析是后代元素
       color: black;
       text-decoration: underline;
      }
      }

    经过编译生成的 CSS 文件如下:

    清单 20. CSS 文件
    1
    2
    3
    4
    5
    6
    7
    8
    a {
    color: red;
    text-decoration: none;
    }
    a:hover {
    color: black;
    text-decoration: underline;
    }

    运算及函数

    在我们的 CSS 中充斥着大量的数值型的 value,比如 color、padding、margin 等,这些数值之间在某些情况下是有着一定关系的,那么我们怎样利用 LESS 来组织我们这些数值之间的关系呢?我们来看这段代码:

    清单 21 . LESS 文件
    1
    2
    3
    4
    5
    @init: #111111;
    @transition: @init*2;
    .switchColor {
    color: @transition;
    }

    经过编译生成的 CSS 文件如下:

    清单 22. CSS 文件
    1
    2
    3
    .switchColor {
      color: #222222;
    }

    上面的例子中使用 LESS 的 operation 是 特性,其实简单的讲,就是对数值型的 value(数字、颜色、变量等)进行加减乘除四则运算。同时 LESS 还有一个专门针对 color 的操作提供一组函数。下面是 LESS 提供的针对颜色操作的函数列表:

    1
    2
    3
    4
    5
    6
    7
    8
    lighten(@color, 10%); // return a color which is 10% *lighter* than @color
    darken(@color, 10%); // return a color which is 10% *darker* than @color
    saturate(@color, 10%); // return a color 10% *more* saturated than @color
    desaturate(@color, 10%);// return a color 10% *less* saturated than @color
    fadein(@color, 10%); // return a color 10% *less* transparent than @color
    fadeout(@color, 10%); // return a color 10% *more* transparent than @color
    spin(@color, 10); // return a color with a 10 degree larger in hue than @color
    spin(@color, -10); // return a color with a 10 degree smaller hue than @color

    PS: 上述代码引自 LESS CSS 官方网站,详情请见 http://lesscss.org/#-color-functions

    使用这些函数和 JavaScript 中使用函数一样。

    清单 23 LESS 文件
    1
    2
    3
    4
    init: #f04615;
      #body {
      
      }

    经过编译生成的 CSS 文件如下:

    清单 24. CSS 文件
    1
    2
    3
    #body {
     
    }

    从上面的例子我们可以发现,这组函数像极了 JavaScript 中的函数,它可以被调用和传递参数。这些函数的主要作用是提供颜色变换的功能,先把颜色转换成 HSL 色,然后在此基础上进行操作,LESS 还提供了获取颜色值的方法,在这里就不举例说明了。

    LESS 提供的运算及函数特性适用于实现页面组件特性,比如组件切换时的渐入渐出。

    Comments(注释)

    适当的注释是保证代码可读性的必要手段,LESS 对注释也提供了支持,主要有两种方式:单行注释和多行注释,这与 JavaScript 中的注释方法一样,我们这里不做详细的说明,只强调一点:LESS 中单行注释 (// 单行注释 ) 是不能显示在编译后的 CSS 中,所以如果你的注释是针对样式说明的请使用多行注释。

    LESS VS SASS

    同类框架还有 SASS : http://sass-lang.com/, 与 LESS 相比,两者都属于 CSS 预处理器,功能上大同小异,都是使用类似程序式语言的方式书写 CSS, 都具有变量、混入、嵌套、继承等特性,最终目的都是方便 CSS 的书写及维护。

    LESS 和 SASS 互相促进互相影响,相比之下 LESS 更接近 CSS 语法,更多两者之间的比较,请参考这篇帖子:https://gist.github.com/674726

    结束语

    本文提到的只是 LESS 的基本功能,更高级的功能如:字符串插值,服务器端使用配置,JavaScript 表达式,避免编译等可以参看 LESS 的官方网站。

    LESS 以 CSS 语法为基础,又借用了很多我们熟知编程式语言的特性,这对于我们开发人员来讲学习成本几乎可以忽略,它在保留 CSS 语法的基础上扩展了更多实用的功能,LESS 为我们提供了一种新的编写样式表的方法,我们可以根据我们的项目特性选择使用 LESS 的部分特性,我们只需用很少的成本就可以换了很大的回报,一句话,Less is more,借助 LESS 可以更便捷的进行 Web 开发。

     

    展开全文
  • 文件后缀校验

    千次阅读 2019-05-23 16:52:09
    文件上传时,为了安全验证,对于手工改动文件后缀名产生的伪造文件进行判断过滤。我们可以根据文件头来判断该文件究竟是什么文件类型。 以下常见文件头类型(网查可靠待定) JPEG (jpg),文件头:FFD8FF PNG (png)...

          文件上传时,为了安全验证,对于手工改动文件后缀名产生的伪造文件进行判断过滤。我们可以根据文件头来判断该文件究竟是什么文件类型。

    以下常见文件头类型(网查可靠待定)

    JPEG (jpg),文件头:FFD8FF 
    PNG (png),文件头:89504E47 
    GIF (gif),文件头:47494638 
    TIFF (tif),文件头:49492A00 
    Windows Bitmap (bmp),文件头:424D 
    CAD (dwg),文件头:41433130 
    Adobe Photoshop (psd),文件头:38425053 
    Rich Text Format (rtf),文件头:7B5C727466 
    XML (xml),文件头:3C3F786D6C 
    HTML (html),文件头:68746D6C3E 
    Email [thorough only] (eml),文件头:44656C69766572792D646174653A 
    Outlook Express (dbx),文件头:CFAD12FEC5FD746F 
    Outlook (pst),文件头:2142444E 
    MS Word/Excel (xls.or.doc),文件头:D0CF11E0 
    MS Access (mdb),文件头:5374616E64617264204A 
    WordPerfect (wpd),文件头:FF575043 
    Postscript (eps.or.ps),文件头:252150532D41646F6265 
    Adobe Acrobat (pdf),文件头:255044462D312E 
    Quicken (qdf),文件头:AC9EBD8F 
    Windows Password (pwl),文件头:E3828596 
    ZIP Archive (zip),文件头:504B0304 
    RAR Archive (rar),文件头:52617221 
    Wave (wav),文件头:57415645 
    AVI (avi),文件头:41564920 
    Real Audio (ram),文件头:2E7261FD 
    Real Media (rm),文件头:2E524D46 
    MPEG (mpg),文件头:000001BA 
    MPEG (mpg),文件头:000001B3 
    Quicktime (mov),文件头:6D6F6F76 
    Windows Media (asf),文件头:3026B2758E66CF11 
    MIDI (mid),文件头:4D546864

     

    判断逻辑待码(根据前4个字节判断)

    package cn.cslp.dgs.util;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.HashMap;
    import java.util.Map;
    
    public class FileCheckUtil {
    
    	public final static Map<String, String> FILE_TYPE_MAP = new HashMap<String, String>();
    
        // 可配置在外部配置文件中
    	public static void init() {
    		FILE_TYPE_MAP.put("jpg", "ffd8ffe0"); // JPEG (jpg)
    		FILE_TYPE_MAP.put("png", "89504e47"); // PNG (png)
    		FILE_TYPE_MAP.put("gif", "47494638"); // GIF (gif)
    		FILE_TYPE_MAP.put("html", "3c21444f"); // HTML (html)
    		FILE_TYPE_MAP.put("css", "48544d4c"); // css
    		FILE_TYPE_MAP.put("js", "696b2e71"); // js
    		FILE_TYPE_MAP.put("doc", "d0cf11e0"); // MS Excel 注意:word、msi 、 excel、Visio 绘图 的文件头一样
    		FILE_TYPE_MAP.put("pdf", "25504446"); // (pdf)
    		FILE_TYPE_MAP.put("zip", "504b0304");
    		FILE_TYPE_MAP.put("rar", "52617221");
    		FILE_TYPE_MAP.put("docx", "504b0304");// docx文件
    	}
    
    	static {
    		init();
    	}
    
    	private FileCheckUtil() {
    
    	}
    
    
    	/**
    	 * 启用
    	 * 可配置在外部配置文件中
    	 * @return
    	 */
    	private static boolean getStartUsing() {
    		return true;
    	}
    
    	/**
    	 * 校验type
    	 * 
    	 * @param content
    	 * @param fileName
    	 * @return
    	 */
    	public static boolean checkFileType(byte[] content, String fileName) {
    		if (!getStartUsing()) {
    			return true;
    		}
    		if (null == fileName || fileName.equals("")) {
    			return false;
    		}
    		if (null == content || content.length <= 0) {
    			return false;
    		}
    
    		// 文件后缀
    		String suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
    		String realCode = FILE_TYPE_MAP.get(suffix);
    		if (realCode == null || (realCode = realCode.trim()).length() == 0) {
    			// 没有配置校验的,直接通过
    			return true;
    		}
    
    		// 获取文件的前16个字节
    		String fileCode = getFileFrontCode(content, 16);
    		if (fileCode.toLowerCase().startsWith(realCode.toLowerCase())) {
    			// 匹配,通过
    			return true;
    		}
    
    		// 全都不匹配,校验不通过
    		return false;
    	}
    
    	/**
    	 * 将文件头转换成16进制字符串
    	 * 
    	 * @param 原生byte
    	 * @return 16进制字符串
    	 */
    	public static String bytesToHexString(byte[] src) {
    		StringBuilder stringBuilder = new StringBuilder();
    		if (src == null || src.length <= 0) {
    			return null;
    		}
    		for (int i = 0; i < src.length; i++) {
    			int v = src[i] & 0xFF;
    			String hv = Integer.toHexString(v);
    			if (hv.length() < 2) {
    				stringBuilder.append(0);
    			}
    			stringBuilder.append(hv);
    		}
    		return stringBuilder.toString();
    	}
    
    	/**
    	 * 文件头byte
    	 * 
    	 * @param content
    	 * @param num
    	 * @return
    	 */
    	private static String getFileFrontCode(byte[] content, Integer num) {
    		Integer length = Math.min(content.length, num); // 防止copy出现越界
    		byte[] b = new byte[length];
    		System.arraycopy(content, 0, b, 0, b.length);
    		return bytesToHexString(b);
    	}
    
    
    
    	public static void main(String[] args) throws Exception {
    		String p = "D:\\temp\\logs\\pdf\\2.pdf";
    		byte[] b = new byte[20];
    		InputStream in = new FileInputStream(new File(p));
    		in.read(b, 0, 20);
    		String fileCode = bytesToHexString(b);
    		System.out.println("截取前:" + fileCode);
    		System.out.println(checkFileType(b, "2.pdf"));
    
    
    	}
    
    }
    

     

    展开全文
  • 下面我测试了一下同一张图片更改后缀名以后的的文件头和文件信息是否变化 微信的图标。分别修改后缀名为jpg png pn(随便改的,就试一下看文件信息变化不) 使用压缩软件的文件MD5计算分别计算jpg png pn三种不同...

    认识:

    一般文件内容开头都会有一个文件类型的标记:

    这是一个PNG文件的内容开头的部分:


    测试:

    下面我测试了一下同一张图片更改后缀名以后的的文件头和文件信息是否变化


    微信的图标。分别修改后缀名为jpg png pn(随便改的,就试一下看文件信息变化不)

    使用压缩软件的文件MD5计算分别计算jpg png pn三种不同后缀名的同一个文件。

    PS:本来想截图,不会截,一按快捷键列表就消失了,后来使用的GIF(录GIF使用的是gifcam.exe


    以下是三个生成的txt的文件信息

    使用文件对比工具Beyongd Compare比较三个tex文本,可以看到只有文件名不一样,其他全部一样




    然后用文件格式识别工具查看以下文件的文件头信息,使用网上的一个软件

    下载地址:http://www.downg.com/soft/42543.html#down

    三个文件文件头相同。




    总结:更改后缀名只是更改文件的名称,文件自身编码格式以及内容不发生变化。

    转一篇java根据头文件码判断文件类型的文章,也就是软件识别文件头的原理

    http://blog.csdn.net/songylwq/article/details/6139753



    展开全文
  • photoshop 入门教程 非word 非pdf 是exe后缀文件 看着很直观 很容易学会
  • Latex文件后缀说明

    2018-07-22 10:19:12
    本文档中的内容是说明latex中生成的各个文件后缀名的用处
  • 数据文件后缀

    千次阅读 2015-12-14 19:53:30
    路径加对了,但是数据文件后缀名加错了! 原来的数据文件名: +data/datafile/xxxxxx.dat 我加的数据文件: +data/datafile/xxxxxx.dbf 业务不会就这样跪了吧???? 果断做了测试: 创建一个包含.
  • 内容提要:文章介绍两个知识点:nef是什么文件和如何打开nef文件。可以通过相机厂商发布的软件和photoshop之类的图像处理软件编辑处理NEF文件。 第一,nef是什么文件  ps教程中nef文件是相机拍摄的原始影像文件,...
  • 文件后缀

    千次阅读 2006-12-28 15:29:00
    pdg是一种电子书,可能用超星的阅读器打开,很多网站都有下载 PDG文件是超星数据图书.需要用超星阅读器打开: 下面是超星阅读器下载地址 参考资料:http://www.tzfo.com/down/Software/Catalog24/54.html 我们经常不...
  • 解决: https://blog.csdn.net/qq_43363005/article/details/83090169 ps: pycharm中不懂得英文命令选项什么的不要乱点,先搞懂是什么再说
  • Linux下的文件文件后缀

    千次阅读 2019-04-09 09:15:43
    一谈到文件类型,大家就能想到Windows的文件类型,比如file.txt、file.doc、file.sys、file.mp3、file.exe等,根据文件后缀就能判断文件的类型。但在Linux一个文件是否能被执行,和后缀名没有太大的关系,主要看...
  • 用chrom浏览器下载了linux版的jdk,发现文件后缀是.gz,没看过这玩意,一打开,还是一个.gz文件,原本以为是新文件后缀呢,那个百度google啊。。。。最后都没发现有这方面的资料啊。。。。。 最后,折腾了好久,...
  • 工作中有时需要批量转化文件格式,将指定的文件后缀修改为另一种后缀,一个一个文件去修改?不存在的,下面是一个小小的Demo,将csv文件转换为Excel。 根据需要可以进一步修改为自己需要的功能。 import pandas as ...
  • 没有转过来 现在转过来最近做SOCKET通讯传输文件遇到获取文件真实类型,即后缀名的问题我要传输文件名到客服端,上传文件时若是遇到无后缀名或是后缀名被更改的如何获取其类型(后缀名)在C#中获取文件后缀名可以Path....
  • Linux下的文件类型及文件后缀名详解

    千次阅读 2018-09-19 16:53:49
    2013年11月19日 14:29:51 jack-zhu 阅读数:5336 标签: Linux下的文件类型及文件后缀名详解 Linux的文件类型及文件后缀名 Linux文件类型 Linux的文件缀名 更多 个人分类: linux Linux下的文件类型及文件后缀名详解...
  • 用chrom浏览器下载了linux版的jdk,发现文件后缀是.gz,没看过这玩意,一打开,还是一个.gz文件,原本以为是新文件后缀呢,那个百度google啊。。。。最后都没发现有这方面的资料啊。。。。。 最后,折腾了好久,...
  • Android 按关键字或文件后缀搜索文件

    千次阅读 2017-05-02 10:11:18
    Android的文件搜索,一般思路都是遍历文件夹逐个比较,但是耗费的时间很长。这里通过调用系统的数据库进行文件的快速查找。
  • 文件后缀 MIME 备注 *.avi video/x-msvideo 视频文件 *.aif *.aiff *.aifc audio/x-aiff 声音文件 *.au *.snd audio/basic 声音文件 *.ai *.eps *.ps application/postscript   *.asd *.asn application/...
  • 如果你不知怎样判断文件后缀, 请参看: 什么是文件后缀名?如果得知文件后缀? 扩展名 文件类型 打开方式 .aiff 声音文件 Windows media Player .!!! Netants 暂存文件 Netants .ani 动画鼠标 .
  • 文件后缀大全

    千次阅读 2011-05-19 22:16:00
    【各种文件后缀名与打开方式大全一】 -------------------------------------------------------------- 扩展名 文件类型 打开方式 .. .ACA Microsoft的代理使用的角色文档 .. .ace 一种压缩格式文档,压缩率...
  • 各种后缀文件的意思

    千次阅读 2013-11-12 17:28:55
    各种文件后缀名与打开方式大全 扩展名 文件类型 打开方式 .aiff 声音文件 Windows media Player .!!! Netants 暂存文件 Netants .ani 动画鼠标 .arj 压缩文件 ARJ .avi 电影文件 Windows ...
  • Java网址下载文件获取后缀

    千次阅读 2017-09-07 10:59:07
    Java网址下载文件获取后缀名网址下载时,网址资源URL格式多样,不一定能在链接中直接获取后缀名,本文综合了多种获取后缀名的方法,供参考: 通过网址后缀直接获取 通过网址响应头中的Content-Disposition(匹配...
  • ipynb后缀文件怎么打开

    万次阅读 2016-12-16 14:54:55
    重点:如何打开ipynb文件,把ipynb后缀文件复制到上面whl的文件夹中,安装执行命令jupyter notebook,然后就弹出页面,就可以看到这个文件了,双击这个文件就可以了 (ps:所有的pip命令都是在cmd环境中执行的...
  • 文件后缀名大全

    千次阅读 2005-09-04 07:09:00
    [转帖]文件后缀名大全 什么是文件名后缀 说起来Windows工作界面下的文件名简直是随心所欲,比如:某编辑部的2000年工作计划。文件名即可用 中文直接表达,而且长度最长可达256个字符,让人看起来真是一目了然。然而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,698
精华内容 19,479
关键字:

后缀是ps的是什么文件