Java_File类和MultipartFile类

目录

一、前言

二、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.txt
    System.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) //文件流
);

 

  • 12
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值