详解 File、Path、Paths、Files 四个类,Java操作文件不再难

Java Files工具类:文件操作工具方法详解(2万字保姆级教程) Files工具类是Java NIO.2 API中的一个实用工具类,位于java.nio.file包中,提供了丰富的静态方法用于文件操作,如创建、删除、复制、移动、读取和写入文件等。与传统File类相比,Files类具有更丰富的功能、更好的异常处理、支持原子操作和符号链接处理,并且性能更优。Files类与Path接口紧密结合,提供了更现代的替代方案。基础操作包括文件检查(如是否存在、可读性、文件类型等)、文件创建与删除(如创建文件、临时文件、目录,以及删除文件或目录)。Files类的核心优势在于其功能丰富性、 阅读详情
AI摘要

本文深入讲解Java中File、Path、Paths、Files四个类的功能及使用方法,覆盖文件创建、删除、复制、移动等常见操作。

titleshortTitlecategorytagdescriptionhead
详解 File、Path、Paths、Files 四个类,Java操作文件不再难
详解File、Path、Paths、Files
Java核心
Java IO
Java程序员进阶之路,小白的零基础Java教程,详解 File、Path、Paths、Files,操作文件不再难
meta
namecontent
keywords
Java,Java SE,Java基础,Java教程,Java程序员进阶之路,Java入门,教程,Java IO,file,paths,files,path

File 类

至于IO流,也就是输入输出流,从文件出发到文件结束,至始至终都离不开文件,所以IO流还得从文件File类讲起。

File概述

java.io.File 类是专门对文件进行操作的类,只能对文件本身进行操作,不能对文件内容进行操作。

java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

怎么理解上面两句话?其实很简单!

第一句就是说File跟流无关,File类不能对文件进行读和写也就是输入和输出!

第二句就是说File主要表示D:\\文件目录1与D:\\文件目录1\\文件.txt,前者是文件夹(Directory)后者则是文件(file),而File类就是操作这两者的类。

构造方法

在java中,一切皆是对象,File类也不例外,不论是哪个对象都应该从该对象的构造说起,所以我们来分析分析File类的构造方法。首先从API开始着手:

比较常用的构造方法有三个:

1、 public File(String pathname) :通过给定的路径来创建新的 File实例。

2、 public File(String parent, String child) :从父路径(字符串)和子路径创建新的 File实例。

3、 public File(File parent, String child) :从父路径(File)和子路径名字符串创建新的 File实例。

看文字描述不够生动、不够形象、不得劲?没事,通过举例马上就生动形象了,代码如下:

1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
2.  File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,都不影响File对象的创建。

// 文件路径名 
String path = "D:\\123.txt";
File file1 = new File(path); 

// 文件路径名
String path2 = "D:\\1\\2.txt";
File file2 = new File(path2);     -------------相当于D:\\1\\2.txt

// 通过父路径和子路径字符串
 String parent = "F:\\aaa";
 String child = "bbb.txt";
 File file3 = new File(parent, child);  --------相当于F:\\aaa\\bbb.txt

// 通过父级File对象和子路径字符串
File parentDir = new File("F:\\aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child); --------相当于F:\\aaa\\bbb.txt

File类的注意点:

  1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
  2. File类构造方法不会给你检验这个文件或文件夹是否真实存在,因此无论该路径下是否存在文件或者目录,都不影响File对象的创建。

常用方法

File的常用方法主要分为获取功能、获取绝对路径和相对路径、判断功能、创建删除功能的方法

获取功能的方法

1、public String getAbsolutePath() :返回此File的绝对路径。

2、public String getPath() :结果和getAbsolutePath一致。

3、public String getName() :返回文件名或目录名。

4、public long length() :返回文件长度,以字节为单位。

测试代码如下【注意测试以自己的电脑文件夹为准】:

public class FileGet {
    public static void main(String[] args) {
        File f = new File("d:/aaa/bbb.java");     
        System.out.println("文件绝对路径:"+f.getAbsolutePath());
        System.out.println("文件构造路径:"+f.getPath());
        System.out.println("文件名称:"+f.getName());
        System.out.println("文件长度:"+f.length()+"字节");

        File f2 = new File("d:/aaa");     
        System.out.println("目录绝对路径:"+f2.getAbsolutePath());
        System.out.println("目录构造路径:"+f2.getPath());
        System.out.println("目录名称:"+f2.getName());
        System.out.println("目录长度:"+f2.length());
    }
}
输出结果:
文件绝对路径:d:\aaa\bbb.java
文件构造路径:d:\aaa\bbb.java
文件名称:bbb.java
文件长度:2116字节

目录绝对路径:d:\aaa
目录构造路径:d:\aaa
目录名称:aaa
目录长度:3236

注意:length() 表示文件的长度,File对象表示目录的时候,则返回值无意义。

绝对路径和相对路径

绝对路径:一个完整的路径,以盘符开头,例如F://aaa.txt。

相对路径:一个简化的路径,不以盘符开头,例如//aaa.txt//b.txt。

1、路径是不区分大小写的

2、路径中的文件分隔符,windows使用反斜杠,反斜杠是转义字符,两个反斜杠代表一个普通的反斜杠;macOS 和Linux 使用的是 /。

//绝对路径
public class FilePath {
    public static void main(String[] args) {
        // D盘下的bbb.java文件
        File f = new File("D:\\bbb.java");
        System.out.println(f.getAbsolutePath());
        
    // 项目下的bbb.java文件
        File f2 = new File("bbb.java");
        System.out.println(f2.getAbsolutePath());
    }
}
输出结果:
D:\bbb.java
D:\java\bbb.java
判断功能的方法

1、 public boolean exists() :判断文件或目录是否存在。

2、 public boolean isDirectory() :判断是否为目录。

3、public boolean isFile() :判断是否为文件。

方法演示,代码如下:

public class FileIs {
    public static void main(String[] args) {
        File f = new File("d:\\aaa\\bbb.java");
        File f2 = new File("d:\\aaa");
        // 判断是否存在
        System.out.println("d:\\aaa\\bbb.java 是否存在:"+f.exists());
        System.out.println("d:\\aaa 是否存在:"+f2.exists());
        // 判断是文件还是目录
        System.out.println("d:\\aaa 文件?:"+f2.isFile());
        System.out.println("d:\\aaa 目录?:"+f2.isDirectory());
    }
}
输出结果:
d:\aaa\bbb.java 是否存在:true
d:\aaa 是否存在:true
d:\aaa 文件?:false
d:\aaa 目录?:true
创建、删除功能的方法
  • public boolean createNewFile() :文件不存在,创建一个新的空文件并返回true,文件存在,不创建文件并返回false。
  • public boolean delete() :删除文件或目录。
  • public boolean mkdir() :创建目录。
  • public boolean mkdirs() :创建目录,包括任何必需但不存在的父目录。

其中,mkdirs()和mkdir()方法类似,但mkdir(),只能创建一级目录,mkdirs()可以创建多级目录比如//a//b//c,所以开发中一般用mkdirs();

这些方法中值得注意的是createNewFile方法以及mkdir与mkdirs的区别

方法测试,代码如下:

public class FileCreateDelete {
    public static void main(String[] args) throws IOException {
        // 文件的创建
        File f = new File("aaa.txt");
        System.out.println("是否存在:"+f.exists()); // false
        System.out.println("是否创建:"+f.createNewFile()); // true
        System.out.println("是否创建:"+f.createNewFile()); // 以及创建过了所以再使用createNewFile返回false
        System.out.println("是否存在:"+f.exists()); // true
    
      // 目录的创建
        File f2= new File("newDir");  
        System.out.println("是否存在:"+f2.exists());// false
        System.out.println("是否创建:"+f2.mkdir()); // true
        System.out.println("是否存在:"+f2.exists());// true

    // 创建多级目录
        File f3= new File("newDira\\newDirb");
        System.out.println(f3.mkdir());// false
        File f4= new File("newDira\\newDirb");
        System.out.println(f4.mkdirs());// true
      
        // 文件的删除
        System.out.println(f.delete());// true
      
        // 目录的删除
        System.out.println(f2.delete());// true
        System.out.println(f4.delete());// false
    }
}

注意:delete方法,如果此File表示目录,则目录必须为空才能删除。

目录的遍历

  • public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
  • public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
public class FileFor {
    public static void main(String[] args) {
        File dir = new File("G:\光标");
      
        //获取当前目录下的文件以及文件夹的名称。
        String[] names = dir.list();
        for(String name : names){
          System.out.println(name);
        }
        //获取当前目录下的文件以及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息
        File[] files = dir.listFiles();
        for (File file : files) {
            System.out.println(file);
        }
    }
}

listFiles在获取指定目录下的文件或者文件夹时必须满足下面两个条件:

1,指定的目录必须存在

2,指定的必须是目录。否则容易引发NullPointerException异常

递归遍历文件夹下所有文件以及子文件

不说啥了,直接上代码:

package File;

import java.io.File;

//递归遍历文件夹下所有的文件
public class RecursionDirectory {
    public static void main(String[] args) {
      File file=new File("D:\\java专属IO测试");
        Recursion(file);
    }
    public static void Recursion(File file){
        //1、判断传入的是否是目录
        if(!file.isDirectory()){
            //不是目录直接退出
            return;
        }
        //已经确保了传入的file是目录
        File[] files = file.listFiles();
        //遍历files
        for (File f: files) {
            //如果该目录下文件还是个文件夹就再进行递归遍历其子目录
            if(f.isDirectory()){
                //递归
                Recursion(f);
            }else {
                //如果该目录下文件是个文件,则打印对应的名字
                System.out.println(f.getName());
            }

        }
    }
}

Path 接口和 Paths 类

Path 接口是 NIO2(AIO) 的一部分,是对 NIO 的更新,Path 接口已添加到 Java 7 中,完全限定类名是 java.nio.file.Path 。

Path 实例表示文件系统中的路径。 路径可以指向文件或目录,也可以是绝对的或相对的。在某些操作系统中,不要将文件系统路径与环境变量中的 path 路径混淆。 java.nio.file.Path 接口与环境变量path无关。

在许多方面,java.nio.file.Path 接口类似于 java.io.File 类,但存在一些细微差别。 不过,在许多情况下,可以使用 Path 接口替换 File 类的使用。

创建 Path 对象

可以使用名为 Paths.get() 创建 Path 实例,get()方法是 Path 实例的工厂方法,一个示例如下:

public class PathExample {
    public static void main(String[] args) {
        // 使用绝对路径创建
        Path absolutePath = Paths.get("D:\\test\\1.txt");
        // 使用相对路径创建
        Path relativePath = Paths.get("D:\\test", "1.txt");
        System.out.println(absolutePath.equals(relativePath)); // ture
    }
}

Paths 类只有2个方法:

方法描述
static Path get(String first, String... more)将路径字符串或在连接时形成路径字符串的字符串序列转换为路径。
static Path (URI uri)将给定URI转换为路径对象。

Path 接口部分方法:

方法描述
boolean endsWith(Path other)测试此路径是否以给定路径结束。
boolean equals(Object other)取决于文件系统的实现。一般不区分大小写,有时区分。 不访问文件系统。
Path normalize()返回一个路径,该路径消除了冗余的名称元素,比如'.', '..'
Path toAbsolutePath()返回绝对路径。
File toFile()转换为 File 对象。
String toString()返回的路径字符串。

注意,假如路径为 D:\\..\\..\\.\\p2\\core\\cache\\binary,normalize 返回 D:\\p2\\core\\cache\\binary

Files 类

NIO 文件类(java.nio.file.Files)为操作文件系统中的文件提供了几种方法,File 类与 java.nio.file.Path 类一起工作,需要了解 Path 类,然后才能使用 Files 类。

判断文件是否存在

static boolean exists(Path path, LinkOption... options)

options 参数用于指示,在文件是符号链接的情况下,如何处理该符号链接,默认是处理符号链接的。其中 LinkOption 对象是一个枚举类,定义如何处理符号链接的选项。整个类只有一个 NOFOLLOW_LINKS; 常量,代表不跟随符号链接。

符号链接(软链接、Symbolic link)是一类特殊的文件, 其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用。一个符号链接文件仅包含有一个文本字符串,其被操作系统解释为一条指向另一个文件或者目录的路径。它是一个独立文件,其存在并不依赖于目标文件。如果删除一个符号链接,它指向的目标文件不受影响。如果目标文件被移动、重命名或者删除,任何指向它的符号链接仍然存在,但是它们将会指向一个不复存在的文件。这种情况被有时被称为被遗弃。

createDirectory(Path path) 创建目录

Path output = Paths.get("D:\\test\\output");
Path newDir = Files.createDirectory(output);
// Files.createDirectories(output); 
// 这个方法可以一并创建不存在的父目录
System.out.println(output == newDir); // true
System.out.println(Files.exists(output)); // true

如果创建目录成功,则返回指向新创建的路径的 Path 实例,此实例和参数是同一个实例。

如果该目录已存在,则抛出 FileAlreadyExistsException 。 如果出现其他问题,可能会抛出IOException ,例如,如果所需的新目录的父目录不存在。

复制文件

一共有 3 个复制方法:

static long copy(Path source, OutputStream out);
static Path copy(Path source, Path target, CopyOption... options);
static long copy(InputStream in, Path target, CopyOption... options)

其中 CopyOption 选项可以选择指定复制模式,一般是其子枚举类 StandardCopyOption 提供选项,有 3 种模式,第二个参数是可变形参,可以多个组合一起使用:

  1. ATOMIC_MOVE :原子复制,不会被线程调度机制打断的操作;一旦开始,就一直运行到结束;
  2. COPY_ATTRIBUTES :同时复制属性,默认是不复制属性的;
  3. REPLACE_EXISTING :重写模式,会覆盖已存在的目的文件;

一个例子如下:

Path sourcePath = Paths.get("D:\\test\\source.txt"); // 源文件必须先存在
Path desPath = Paths.get("D:\\test\\des.txt"); // 目的文件可以不存在
Files.copy(sourcePath, desPath); // 默认情况,如果目的文件已存在则抛出异常
Files.copy(sourcePath, desPath, StandardCopyOption.REPLACE_EXISTING); // 覆盖模式

注意:复制文件夹的时候,只能复制空文件夹,如果文件夹非空,需要递归复制,否则只能得到一个空文件夹,而文件夹里面的文件不会被复制。

移动文件/文件夹

只有 1 个移动文件或文件夹的方法:

static Path move(Path source, Path target, CopyOption... options);

如果文件是符号链接,则移动符号链接本身,而不是符号链接指向的实际文件。

和移动文件一样,也存在第三个可选参数 CopyOption ,参考上述。如果移动文件失败,可能会抛出 IOException,例如,如果文件已存在于目标路径中,并且遗漏了覆盖选项,或者要移动的源文件不存在等。

和复制文件夹不一样,如果文件夹里面有内容,复制只会复制空文件夹,而移动会把文件夹里面的所有东西一起移动过去,以下是一个移动文件夹的示例:

// 移动 s 目录到一个不存在的新目录
Path s = Paths.get("D:\\s");
Path d = Paths.get("D:\\test\\test");
Files.createDirectories(d.getParent());
Files.move(s, d);

和 Linux mv 命令一样,重命名文件与移动文件方式相同,移动文件还可以将文件移动到不同的目录并可以同时更改其名称。 另外 java.io.File 类也可以使用它的 renameTo() 方法来实现移动文件,但现在 java.nio.file.Files 类中也有文件移动功能。

删除文件/文件夹

static void delete(Path path);
static boolean deleteIfExists(Path path); // 如果文件被此方法删除则返回 true

如果文件是目录,则该目录必须为空才能删除。

Files.walkFileTree() 静态方法

删除和复制文件夹的时候,如果文件夹为空,那么会删除失败或者只能复制空文件夹,此时可以使用 walkFileTree() 方法进行遍历文件树,然后在 FileVisitor 对象的 visitFile() 方法中执行删除或复制文件操作。

Files 类有 2 个重载的 walkFileTree() 方法,如下:

static Path walkFileTree(Path start,
                                FileVisitor<? super Path> visitor);

static Path walkFileTree(Path start,
                                Set<FileVisitOption> options,
                                int maxDepth,
                                FileVisitor<? super Path> visitor);

将 Path 实例和 FileVisitor 作为参数,walkfiletree() 方法可以递归遍历目录树。Path 实例指向要遍历的目录。在遍历期间调用 FileVisitor ,首先介绍 FileVisitor 接口:

public interface FileVisitor<T> {
    
    FileVisitResult preVisitDirectory(T dir, BasicFileAttributes attrs) throws IOException;

    FileVisitResult visitFile(T file, BasicFileAttributes attrs) throws IOException;
    
    FileVisitResult visitFileFailed(T file, IOException exc) throws IOException;
    
    FileVisitResult postVisitDirectory(T dir, IOException exc) throws IOException;
}

必须自己实现 FileVisitor 接口,并将其实现的实例传递给 walkFileTree() 方法。在目录遍历期间,将在不同的时间调用 FileVisitor 实现的 4 个方法,代表对遍历到的文件或目录进行什么操作。如果不需要使用到所有方法,可以扩展 SimpleFileVisitor 类,该类包含 FileVisitor 接口中所有方法的默认实现。

Files.walkFileTree(inputPath, new FileVisitor<Path>() {
    // 访问文件夹之前调用此方法
    @Override
    public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
        System.out.println("pre visit dir:" + dir);
        return FileVisitResult.CONTINUE;
    }

    // 访问的每个文件都会调用此方法,只针对文件,不会对目录执行
    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        return FileVisitResult.CONTINUE;
    }

    // 访问文件失败会调用此方法,只针对文件,不会对目录执行
    @Override
    public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
        return FileVisitResult.CONTINUE;
    }

    // 访问文件夹之后会调用此方法
    @Override
    public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
        return FileVisitResult.CONTINUE;
    }
});

这四个方法都返回一个 FileVisitResult 枚举实例。FileVisitResult 枚举包含以下四个选项:

  • CONTINUE : 继续
  • TERMINATE : 终止
  • SKIP_SIBLINGS : 跳过兄弟节点,然后继续
  • SKIP_SUBTREE : 跳过子树(不访问此目录的条目),然后继续,仅在 preVisitDirectory 方法返回时才有意义,除此以外和 CONTINUE 相同。

通过返回其中一个值,被调用的方法可以决定文件遍历时接下来应该做什么。

搜索文件

walkFileTree() 方法还可以用于搜索文件,下面这个例子扩展了 SimpleFileVisitor 来查找一个名为 input.txt 的文件:

Path rootPath = Paths.get("D:\\test");
String fileToFind = File.separator + "input.txt";

Files.walkFileTree(rootPath, new SimpleFileVisitor<Path>() {
    @Override
    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
        String fileString = file.toAbsolutePath().toString();
        System.out.println("pathString: " + fileString);

        if (fileString.endsWith(fileToFind)) {
            System.out.println("file found at path: " + fileString);
            return FileVisitResult.TERMINATE;
        }
        return FileVisitResult.CONTINUE;
    }
});

同理,删除有内容的目录时,可以重写 visitFile() 方法,并在里面执行删除文件操作,重写 postVisitDirectory() 方法,并在里面执行删除目录操作即可。

Files 类中的其他方法

Files 类包含许多其他有用的函数,例如用于创建符号链接,确定文件大小,设置文件权限等的函数。有关java.nio.file.Files 类的详细信息,请查看 JavaDoc


最近整理了一份牛逼的学习资料,包括但不限于Java基础部分(JVM、Java集合框架、多线程),还囊括了 数据库、计算机网络、算法与数据结构、设计模式、框架类Spring、Netty、微服务(Dubbo,消息队列) 网关 等等等等……详情戳:可以说是2022年全网最全的学习和找工作的PDF资源了

关注二哥的原创公众号 沉默王二,回复111 即可免费领取。

来源:https://github.com/itwanger/toBeBetterJavaer/blob/master/docs/io/file-path.md
Java之File类的详细解析及小练习 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 阅读详情

相关推荐

基于java Files类和Paths类的用法(详解)

下面小编就为大家分享一篇基于java Files类和Paths类的用法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe

目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Selector Java NIO 学习笔记(四)----文件通道和网络通道 Java NIO 学习笔记(五)----路径、文件和管道 Path/Files/Pipe Java NIO 学习笔记(六)----异步...

czwbig的博客 948

InSAR数据获取实战指南:Sentinel-1、精密轨道与ALOS PALSAR DEM的下载与应用

本文详细介绍了InSAR数据获取的实战指南,重点解析Sentinel-1数据、精密轨道数据(OPOD)和ALOS PALSAR DEM的下载与应用技巧。通过实际案例和代码示例,帮助读者掌握数据筛选、下载加速、校验及多源数据协同使用的关键方法,提升地面形变监测的精度与效率。

weixin_29215815的博客 431

java file path_java 文件操作(二)---Files和Path

自从java 7以来,引入了FIles类和Path接口。他们两封装了用户对文件的所有可能的操作,相比于java 1的File类来说,使用起来方便很多。但是其实一些本质的操作还是很类似的。主要需要知道的是,Path表示路径可以使文件的路径也可以是目录的路径,Files中所有成员都是静态方法,通过路径实现了对文件的基本操作。下面我们首先看看Path接口。一、Path接口和Path接口相关的还有一个类P...

weixin_33121737的博客 1417

GOM Correlate拉伸试验后处理操作

本文描述了使用GOM Software 2022对拉伸试样进行后处理的操作,包括设置检测点、引伸计、输出应变数据到表格、输出报告为视频等

qq_45008924的博客 4661

用SimaPro做碳足迹分析:手把手教你完成产品生命周期评估报告

本文详细介绍了如何使用SimaPro进行碳足迹分析,从软件安装到生命周期评估报告的完整流程。通过实战案例演示,帮助制造业企业、咨询机构和科研团队掌握产品生命周期评估(LCA)的核心技术,精准识别环境热点并优化决策,为可持续发展转型提供科学依据。

yhn45678901的博客 711

java 文件的操作(Path、Paths、Files)

随着 Java 7 引入 NIO.2(即 Java New I/O 2),文件处理得到了显著改进。PathPaths和FilesPath:表示文件系统中的路径,类似于传统的,但更加灵活和功能丰富。Paths:一个工具类,提供静态方法用于创建Path实例。Files:一个实用工具类,提供了大量静态方法用于执行文件和目录的各种操作,如创建、删除、复制、移动、读取和写入等。相比传统的File类,NIO.2 提供了更好的错误处理、更丰富的功能以及对不同文件系统的支持。Path是一个接口,位于。

小程xy的博客 2665

实战篇(一):从零构建领域知识图谱——基于Protege的本体建模与知识表示

本文详细介绍了如何从零构建领域知识图谱,重点讲解了基于Protege的本体建模与知识表示方法。通过游戏和电影领域的实战案例,展示了类层次结构设计、属性关系定义、推理验证等关键步骤,帮助读者掌握知识图谱构建的核心技术。

weixin_42613501的博客 479

【深入理解Java IO流0x02】详解Java中的文件、目录操作(File、Paths、Files类)

我们都知道,大部分时候,我们用IO流操作的对象是一个又一个文件,文件操作在Java中是相对复杂但是使用频率比较高的。项目中几乎都会存在一个类似于叫FileUtils的工具类。因此本篇博客将为大家介绍Java中关于文件、目录的相关操作。主要就是三个类,分别是来自于java.io包下的File类,以及包下的Paths类和Files类。接下来我们正式开始!

weixin_70757494的博客 2851

ICM42670 IIC驱动与卡尔曼+四元数姿态解算实战

惯性测量单元(IMU)是运动控制、无人机飞控和AR/VR设备的核心传感器,其数据质量直接取决于底层硬件通信可靠性与姿态估计算法鲁棒性。IIC(I²C)作为嵌入式系统中最常用的低速串行总线,需满足确定性时序、抗干扰与实时采样要求;卡尔曼滤波则通过状态建模与噪声协方差优化,在动态环境中融合加速度计与陀螺仪数据;而四元数因其无万向锁、插值平滑、旋转合成高效等优势,成为高精度姿态解算的数学基础。本文以高性能六轴IMU ICM42670为载体,深入剖析IIC硬件设计要点、裸机级驱动优化、Allan方差驱动的卡尔曼参数

weixin_27076351的博客 251

别再手动测接口了!用Pytest+Requests+Allure搭建你的第一个自动化框架(附完整源码)

本文详细介绍了如何使用Pytest+Requests+Allure搭建Python接口自动化测试框架,涵盖环境准备、核心组件封装、测试用例设计、报告生成及CI/CD集成等关键步骤。通过实战案例和完整源码,帮助开发者快速构建高效的接口自动化测试解决方案,提升测试效率和质量。

weixin_42546508的博客 319

【Java基础】Java7新特性—Files类,Path类,Paths类的用法

文章目录Java7新增文件IO类一.Paths1.创建Paths二.Path1.创建Path1.1.创建Path的三种方式2.Path常用方法三.Files1.判断方法:2.删除方法3.复制方法4.移动和重命名方法5.创建文件和文件夹方法6.文件属性方法7.读取、编辑文件内容方法8.遍历文件列表方法四.Path和Files使用五.FileTime对象 Java7新增文件IO类 Java7中文件IO...

墩墩分墩 9687

YOLO11改进-模块-引入多尺度差异融合模块MDFM

MDFM主要用于融合双时相图像特征并生成带有丰富上下文信息的差异特征,其过程包含以下步骤:1. 特征提取与差异特征生成首先从双时相图像中提取特征f1和f2,然后将f1和f2进行像素级别的相减,再对相减结果取绝对值,最后通过一个3x3的卷积操作得到Di。2. 多尺度特征融合(MSFF)接着利用多尺度特征学习机制来增强特征融合效果。该机制通过不同核大小的卷积构建多尺度融合过程,具体是通过一个名为 MSFF 单元来实现的。

qq_64693987的博客 4378

java 中File Files Path Paths 这四个类区别对比

java 中File Files Path Paths 这四个类区别对比

爱的叹息的专栏 751

SIMULINK开发项目实例 1000 例专栏之第847例--基于飞行控制与稳定性的场景实例:多旋翼无人机在风扰动下的稳定性分析

本文介绍了使用Simulink进行多旋翼无人机风扰动稳定性分析的完整流程。首先建立包含动力学模型、控制系统和环境模拟三大模块的仿真系统,其中动力学模型基于牛顿-欧拉方程,控制系统采用PID调节器。重点展示了MATLAB函数实现的风扰动模型和姿态控制算法,通过设置输入信号和输出显示模块完成闭环仿真。最后通过多次风速条件下的仿真测试评估控制系统的抗干扰能力和稳定性表现,为无人机控制系统设计提供了有效的仿真验证方法。

xiaoheshang_123的博客 321

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Java NIO库中三个不同的类Files、Path和Paths

Files.Path.Paths 三个类是 Java NIO(New I/O)框架的一部分,用于处理 Java 程序中的文件系统操作。

book_dw5189的博客 2664

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Paths 和 Files:Java NIO 中的文件操作利器

在 Java 7 中,Paths和Files类被引入,作为对类的补充和改进。这两个类提供了更简洁、更高效的方法来操作文件和目录路径,极大地简化了文件系统操作的复杂性。

专注Java和MySQL领域知识分享 1370

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java-File、Path、Paths和Files类

java-File、Path、Paths和Files类

梅长苏的博客 1264

java Files类和Paths类的用法详解

http://blog.youkuaiyun.com/u010889616/article/details/52694061 Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem; import java.nio.file.FileSystems; impor...

shadow_zed的博客 5489

Path、Paths、Files的使用

Path接口的名字非常恰当,就是表示路径的,API中讲Path对象可以是一个文件,一个目录,或是一个符号链接,也可以是一个根目录。创建Path并不会创建物理文件或是目录,path实例经常引用并不存在的物理对象,要真正创建文件或是目录,需要用到Files类。Files类是一个非常强大的类,它提供了处理文件和目录以及读取文件和写入文件的静态方法。Files还拥有创建流对象的方法。Path就是取代File的,用于来表示文件路径和文件。它的delete方法经常莫名其妙的失败等,旧的File类经常是程序失败的根源。

Code Writers 1452

Java操作文件Path 和 Paths 及Files类介绍

2.4. 复制文件:Files.copy(from, to, StandardCopyOption.REPLACE_EXISTING);2.5. 移动文件:Files.move(from, to, StandardCopyOption.ATOMIC_MOVE);创建文件,删除文件,复制文件,查找文件,查找文件个数等,只需要调一个Api就能解决,下面开始进行介绍。这是一套非常好用操作文件的方法,省去了以前复杂的文件操作方法。...

m0_57640408的博客 3055

NIO.2中Path、 Paths、Files类的使用

NIO.2中Path、Paths、Files类的使用 1.NIO概述 2.NIO. 2 3.Path 接口 4.Files 类 package com.atguigu.java; import org.junit.Test; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; /** * 1. jdk 7.0 时,引入了 Path、Paths、Files三个类。 * 2.此三个类声明在

xiaotai1234的博客 836

Java基础教程——File类、Paths类、Files类

File类 File类在java.io包中。io代表input和output,输入和输出。 代表与平台无关的文件和目录。 可以新建、删除、重命名,但不能访问文件内容。 File类里的常量: import java.io.File; public class TestFileConst { public static void main(String[] args) { ...

weixin_30411239的博客 443

java path类_基于java Files类和Paths类的用法(详解)

Java7中文件IO发生了很大的变化,专门引入了很多新的类:import java.nio.file.DirectoryStream;import java.nio.file.FileSystem;import java.nio.file.FileSystems;import java.nio.file.Files;import java.nio.file.Path;import java.nio...

weixin_42297714的博客 3589

java files.readalllines_java文件操作之Path,Paths,Files

java文件操作之Path,Paths,Files发布于 2020-3-25|复制链接Java7中文件IO发生了很大的变化,专门引入了很多新的类,下面给大家分享用Files作为一个操作类的实例,需要的朋友可以参考Java7中文件IO发生了很大的变化,专门引入了很多新的类:import java.nio.file.DirectoryStream;import java.nio.file.FileSy...

weixin_34963576的博客 942
上一篇: 最优雅的Java字符串拼接是哪种方式?
下一篇: 史上最骚最全最详细的IO流教程,没有之一
码趣资源网
博客等级 码龄4年 268粉丝 518原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值