目录

一、前言

二、File类

2.1 定义

2.2 构造器

2.3 常用方法

三、MultipartFile类

3.1 定义

3.2 常用方法

四、File类和MultipartFile类的转换

4.1 Multipartfile转File类型

4.2 File转Multipartfile类型

4.3创建MultiPartfile需要的参数


一、前言

之前使用这两个类的时候,都是现用现找,没有太研究过,最近研究文档的上传和解析,觉得有必要对这两个类进行一下深入的学习,总结成文,做个笔记吧。

二、File类

2.1 定义

File类(文件类)是java.io包中的类,是以抽象的方式代表文件名和目录路径名。该类主要用于文件和目录的创建、文件的查找和文件的删除等。

File类代表磁盘中实际存在的文件和目录,这个文件或者目录的路径可以是绝对路径,也可以是相对路径。

2.2 构造器

1、根据路径名字符串转换为抽象路径名来创建一个新 File 实例。

public File(String pathname){...}

如果pathname为空,会抛出NullPointerException空指针异常。

2、根据parent路径名字符串和child路径名字符串创建一个新 File 实例。

public File(String parent, String child){...}

会以父路径作为目录,子路径作为父路径下的目录或者文件名,最后得到的实例对象的路径就是父路径和子路径的组合。

如果parent为null,会以子路径作为绝对路径创建实例,等同于调用第一个public File(String pathname)效果一样。

如果子路径child为Null,会抛出NullPointerException空指针异常。

3、根据父路径的File实例对象和子路径名字符串创建一个新的File实例。

public File(File parent, String child){...}

等同于第二种构造器,这个构造器是父路径字符串的File实例对象传进去。

举例:

public static void main(String[] args)
{//父路径字符串String parent = "F:/testFile";File parentFile= new File(parent);//子路径字符串String child = "F:/testFile/test.txt";//两种构造器实例化File对象File file1 = new File(parent, child);File file2 = new File(parentFile, child);//两种构造器的实例化出的对象的结果System.out.println(file1.getPath()); // 结果为  F:\testFile\F:\testFile\test.txtSystem.out.println(file2.getPath()); // 结果为  F:\testFile\F:\testFile\test.txt
}

2.3 常用方法

使用这样三种File对象,来测试每种的方法的结果。

//文件
File file = new File("F:\\测试文件.txt");
//目录
File dirFile = new File("F:\\work");
//错误格式
File errorFile = new File("haha");

1、获取实例对象代表的文件名字:public String getName()

System.out.println("文件File对象:"+file.getName()); //输出为 "文件File对象:测试文件.txt"
System.out.println("目录File对象:"+dirFile.getName()); //输出为 "目录File对象:work"
System.out.println("相对路径文件夹:"+errorFile.getName()); //输出为 "相对路径文件夹:haha"

2、获取实例对象代表的文件上级目录,如果此路径名没有指定父目录,则返回 null:public String getParent()

System.out.println("文件File对象:"+file.getParent()); //输出为 "文件File对象:F:\"
System.out.println("目录File对象:"+dirFile.getParent()); //输出为 "目录File对象:F:\"
System.out.println("相对路径文件夹:"+errorFile.getParent()); //输出为 "相对路径文件夹:null"

3、获取实例对象的父路径的实例,如果此路径名未指定父目录,则返回null,也就是获取对象的上级目录然后再实例化一个对象:public File getParentFile()

System.out.println("文件File对象:"+file.getParentFile()); //输出为 "文件File对象:F:\"
System.out.println("目录File对象:"+dirFile.getParentFile()); //输出为 "目录File对象:F:\"
System.out.println("相对路径文件夹:"+errorFile.getParentFile()); //输出为 "相对路径文件夹:null"

4、获取实例对象的实际路径名字符串:public String getPath()

System.out.println("文件File对象:"+file.getPath()); //输出为 "文件File对象:F:\测试文件.txt"
System.out.println("目录File对象:"+dirFile.getPath()); //输出为 "目录File对象:F:\work"
System.out.println("相对路径文件夹:"+errorFile.getPath()); //输出为 "相对路径文件夹:haha"

5、测试此实例对象的路径是否为绝对路径:public boolean isAbsolute()

System.out.println("文件File对象:"+file.isAbsolute()); //输出为 "文件File对象:true"
System.out.println("目录File对象:"+dirFile.isAbsolute()); //输出为 "目录File对象:true"
System.out.println("相对路径文件夹:"+errorFile.isAbsolute()); //输出为 "相对路径文件夹:false"

6、获取实例对象的绝对路径名字符串:public String getAbsolutePath()

System.out.println("文件File对象:"+file.getAbsolutePath()); //输出为 "文件File对象:F:\测试文件.txt"
System.out.println("目录File对象:"+dirFile.getAbsolutePath()); //输出为 "目录File对象:F:\work"
System.out.println("相对路径文件夹:"+errorFile.getAbsolutePath()); //输出为 "相对路径文件夹:F:\xx\firstproject\haha  F:\xx\firstproject  是工作空间路径"

7、测试应用程序是否可以读取此实例对象表示的文件:public boolean canRead()

System.out.println("文件File对象:"+file.canRead()); //输出为 "文件File对象:true"
System.out.println("目录File对象:"+dirFile.canRead()); //输出为 "目录File对象:true"
System.out.println("相对路径文件夹:"+errorFile.canRead()); //输出为 "相对路径文件夹:false"

8、测试应用程序是否可以修改此实例对象表示的文件:public boolean canWrite()

System.out.println("文件File对象:"+file.canWrite()); //输出为 "文件File对象:true"
System.out.println("目录File对象:"+dirFile.canWrite()); //输出为 "目录File对象:true"
System.out.println("相对路径文件夹:"+errorFile.canWrite()); //输出为 "相对路径文件夹:false"

9、测试实例对象表示的文件或目录是否存在:public boolean exists()

System.out.println("文件File对象:"+file.exists()); //输出为 "文件File对象:true"
System.out.println("目录File对象:"+dirFile.exists()); //输出为 "目录File对象:true"
System.out.println("相对路径文件夹:"+errorFile.exists()); //输出为 "相对路径文件夹:false"

10、测试实例对象是否是一个目录: public boolean isDirectory()

System.out.println("文件File对象:"+file.isDirectory()); //输出为 "文件File对象:false"
System.out.println("目录File对象:"+dirFile.isDirectory()); //输出为 "目录File对象:true"
System.out.println("相对路径文件夹:"+errorFile.isDirectory()); //输出为 "相对路径文件夹:false"

11、测试实例对象是否是一个文件:public boolean isFile()

System.out.println("文件File对象:"+file.isFile()); //输出为 "文件File对象:true"
System.out.println("目录File对象:"+dirFile.isFile()); //输出为 "目录File对象:false"
System.out.println("相对路径文件夹:"+errorFile.isFile()); //输出为 "相对路径文件夹:false"

12、删除此实例对象表示的文件或目录:public boolean delete()

13、创建此实例对象指定的目录:public boolean mkdir() 

14、创建此实例对象指定的目录,包括创建必需但不存在的父目录:public boolean mkdirs() 

15、 重新命名此实例对象表示的文件:public boolean renameTo(File dest)  

16、返回由此实例对象表示的文件的长度:public long length()

三、MultipartFile类

3.1 定义

多部分请求中收到的上载文件的表示形式。

文件内容要么存储在内存中,要么临时存储在磁盘上。无论哪种情况,用户都可以根据需要负责将文件内容复制到会话级或持久性存储中。临时存储将在请求处理结束时清除。

3.2 常用方法

1、以字节数组形式返回文件的内容:byte[] getBytes() throws IOException

2、返回文件的内容类型:String getContentType()

3、返回一个InputStream,以从中读取文件的内容:InputStream getInputStream() throws IOException

4、 返回参数的名称:String getName()

5、返回客户端文件系统中的原始文件名:String getOriginalFilename()

6、返回文件的大小(以字节为单位)如果为空,则为空字节数组:long getSize()

7、判断是否为空,或者上传的文件是否有内容:boolean isEmpty()

8、将收到的文件传输到给定的目标文件:void transferTo(File dest) throws IOException, IllegalStateException

这可以在文件系统中移动文件,在文件系统中复制文件,或将内存保存的内容保存到目标文件。

如果目标文件已经存在,则将首先删除它。 如果文件已在文件系统中移动,则无法再次调用此操作。因此,只需调用一次此方法即可使用任何存储机制。

四、File类和MultipartFile类的转换

4.1 Multipartfile转File类型

//创建一个file对象
File file = new File(path);
//将multipartFile的输入流,拷贝到file对象,此时file对象的内容就是mutipartFile中的内容
FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);

4.2 File转Multipartfile类型

//创建file对象
File file = new File("d:/test.txt");
//获取file对象的文件输入流
FileInputStream input = new FileInputStream(file);
MultipartFile multipartFile =new MockMultipartFile("test.txt", file.getName(), "text/plain", IOUtils.toByteArray(input));

4.3创建MultiPartfile需要的参数

MultipartFile mulFile = new MockMultipartFile(
"test.txt", //文件名
"test.txt", //文件在客户机上的文件名
ContentType.APPLICATION_OCTET_STREAM.toString(), //文件类型
new FileInputStream(file) //文件流
);

Java_File类和MultipartFile类相关推荐

  1. MultipartFile类常用的一些方法

    2019独角兽企业重金招聘Python工程师标准>>> MultipartFile类常用的一些方法: String getContentType()//获取文件MIME类型 Inpu ...

  2. multipartfile转excel_关于MultipartFile类接收EXCEL文件的问题

    现有的做法是用MultipartFile类读取excel文件以后用transferTo()转存到硬盘上,请问能不能不用转存到硬盘直接用File类读取,试过将其强制转换成File类型结果报错. 目前做法 ...

  3. MultipartFile类的说明

    MultipartFile类的说明 MultipartFile类是一个接口 public interface MultipartFile  /**  * A representation of an ...

  4. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  5. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

    1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...

  6. java 类定义_JAVA类与对象(二)----类定义基础

    类是组成java程序的基本要素,是java中的一种重要的复合数据类型.它封装了一类对象的状态和方法,是这一类对象的原型.一个类的实现包括两个部分:类声明和类体,基本格式: class { 属性 方法 ...

  7. C++派生类与基类构造函数调用次序

    本文用来测试C++基类和派生类构造函数,析构函数,和拷贝构造函数的调用次序. 运行环境:SUSE Linux Enterprise Server 11 SP2  (x86_64) #include & ...

  8. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

  9. Java 常用对象-Date类和Calender类

    2017-11-02 22:29:34 Date类:类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值 ...

最新文章

  1. LeetCode简单题之只出现一次的数字
  2. Nature Methods:Rob Knight发布Striped UniFrac算法轻松分析微生物组大数据
  3. JCIFS实现单点登录
  4. Table of Contents - Tomcat
  5. java 取得日期_java-如何从某个日期获取日期列表?
  6. BW:BW增量更新方法(假增量)
  7. php 中间代码,PHP内核中用户函数、内部函数和中间代码的转换
  8. 信息学奥赛一本通C++语言——1022: 整型与布尔型的转换
  9. AcWing1088.旅行问题(单调队列DP)
  10. 转型个股赚钱机会最大--封起“345”选股
  11. 最新nodejs的开发学习实战(1)从一个博客开始
  12. unity的UI元素层级调整的方法
  13. 5大主流ASO优化工具
  14. 南阳oj 58 bfs入门
  15. TexturePacker 图片加密
  16. 怎么识别图片上的文字?告诉你3款简单又实用的识别软件
  17. 基于JAVA宠物用品交易网站计算机毕业设计源码+系统+lw文档+部署
  18. 互联网大公司与创业公司
  19. 安装Ubuntu的时候屏幕太小看不到下一步,点不到继续按钮
  20. Magento付款方式的判断

热门文章

  1. php支付接口,代付、感悟
  2. 双路高速 AD 实验
  3. vue+js+海康web开发包接入海康威视摄像头
  4. BeeMobile for Windows Mobile
  5. 边缘计算物联网关TG462
  6. GLAD:高斯光束的吸收和自聚焦效应
  7. 中文分词好用的pyhanLP包
  8. 妥协背后能否解决光伏风电之殇?
  9. SGU 103 Traffic Lights(最短路)
  10. 计算机配件行情,配件行情