Java File对象

File对象实例化

三种构造器

File file = new File("C:\\Users\\Administrator\\Desktop\\数据结构代码\\algorithm");//绝对路径
File file1 = new File(file,"testtss.txt");//根据parent和child构造
File file2 = new File(file,"test");//相对路径

相对路径的例子:

	用junit单元测试创建的文件在当前moudle下
	在main中创建的文件在当前project下

跨平台路径分隔符

	File file3 = new File("D:" + File.separator + "io" + File.separator + "test11.txt")
  • File对象的实例化仅仅是内存层面开辟了一个空间
  • File对象可以存储文件,也可以存储文件目录
  • File对象表示的是路径的最后一个文件,例如:"C:\Users\Administrator\Desktop\数据结构代码\algorithm"的对象对其操作更改的是algorithm文件目录
    该文件目录实际存在与否的区别

部分API

方法解释备注
createTempFile
(String prefix, String suffix)
(String prefix, String suffix, File directory)
static方法,“创建空文件”
文件名前缀(最少3字符),文件名后缀
前缀,后缀,指定路径的File对象
deleteOnExitrun结束后就删掉创建的方式是mkdirs,但删除时是只删除该File对象路径的最末尾文件
delete删除File对象对应的文件or文件目录必须保证是末梢路径,不然不能删除并且返回false
renameTo(File dest)1,如果destFile对象与源文件File对象是在同一个路径下,那么renameTo的作用是重命名
2,如果目标文件与源文件不是在同一个路径下,那么renameTo的作用就是剪切,而且还不能操作文件夹。
见代码详解 1
getParent
getParentFile
返回父路径String
返回父路径File
用于同路径创建等操作
length返回字节长度long非空小文件的length返回值可能为0 2

参考链接

应用

递归遍历

1,遍历删除

要求:

  • 遍历d:\io目录下的所有文件and文件目录名
  • 删除png,img格式的文件,并告知删除成功

代码示例:

public class FileTest1 {
    public static void intoDir(File f){//定义静态方法
            File[] files = f.listFiles();//罗列内部所有File对象
        for(File ff : files){
            if (ff.isFile()){
                System.out.println("文件" + ff.toString());
                /*****************删除img,png格式的图片文件**********/
                if(ff.toString().endsWith("img") || ff.toString().endsWith("png")){
                    ff.delete();
                    System.out.println("删除成功:"+ff.toString());
                }
                /****************************************************/
            }
            else{
                System.out.println("文件目录" + ff.toString());
                intoDir(ff);//递归
            }
        }
    }
    public static void main(String[] args) throws IOException {
    File file = new File("D:\\io");
   FileTest1.intoDir(file);//调用静态遍历方法
    }
}

运行结果

2,遍历计算大小

要求:

  • 计算指定文件目录的大小
  • 删除空文件(不是删空的文件目录)

代码示例:

public class FileTest1 {
    public static long sumLength(File file){
        File[] files = file.listFiles();
        long sum = 0;
        for(File f : files){
            if (f.isFile()){
                /****判断是否为空文件,若是则删除并告知****/
                long length = f.length();
                if(length == 0){
                    f.delete();
                    System.out.println("删除空文件:"+f.toString());
                }
                else{
                    sum += length;
                }
                /*******************  *****************/
            }
            else{
                FileTest1.sumLength(f);
            }
        }
        return sum;
    }


    public static void main(String[] args) {
        File file = new File("D:\\io");
        long l = FileTest1.sumLength(file);
        System.out.println("该文件总长为:"+l);
    }
}

运行结果

为什么最后的文件总长计算结果为0?

因为小文件会内联存储
NTFS文件系统是如何处理小文件的

占用空间和文件大小的区别

大小对比解释
小文件文件大小 > 占用空间
通常占用空间为0
因为小文件内联存储
大文件文件大小 < 占用空间大文件占用空间包括了没有使用的簇的空间大小

  1. File file1 = new File("D:\\io\\io2\\io3\\start.txt");
    System.out.println(file1.createNewFile());//true创建成功,存在则false
    File file2 = new File("D:\\io\\io1\\io3\\dest.txt");
    System.out.println(file1.renameTo(file2));//dest不存在,则true
    // "D:\\io\\io2\\io3\\start.txt"变成了"D:\\io\\io1\\io3\\dest.txt"( 路径不同:剪切 )
    //若dest文件已存在,则返回false
    File file3 = new File("D:\\io\\io1\\io3\\file.txt");
    System.out.println(file2.renameTo(file3));( 同路径:重命名)
    
    ↩︎
  2. ↩︎
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将JavaFile对象转换为MultipartFile对象,您可以按照以下步骤进行操作: 1. 首先,导入所需的: ```java import org.springframework.web.multipart.MultipartFile; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.HttpEntity; import org.springframework.core.io.FileSystemResource; ``` 2. 创建一个方法来执行转换: ```java public MultipartFile convertToMultipartFile(File file) throws IOException { MultiValueMap<String, Object> parts = new LinkedMultiValueMap<>(); parts.add("file", new FileSystemResource(file)); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.MULTIPART_FORM_DATA); HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(parts, headers); return new RestTemplate().postForObject("http://localhost:8080/upload", requestEntity, MultipartFile.class); } ``` 请注意,上述代码中的URL "http://localhost:8080/upload" 是示例URL,您需要根据实际情况进行修改。 3. 调用该方法并传递File对象: ```java File file = new File("path/to/file.txt"); try { MultipartFile multipartFile = convertToMultipartFile(file); // 现在您可以使用MultipartFile对象进行后续处理 } catch (IOException e) { e.printStackTrace(); } ``` 这样,您就可以将JavaFile对象转换为MultipartFile对象了。请确保在使用该代码时,已经包含了相关的依赖(如spring-web等)并进行了正确的配置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值