Java中Path.of()使用报错

Java中Path.of()使用报错由于JDK版本号不同所导致的java中path类of方法的报错处理

Java中Path.of方法的使用

起因

  学习Java核心技术这本书的3.7.3章节时,对于书中代码的实现出现了一些问题,书中所呈现的是这样的语句:
点击查看代码

Scanner in = new Scanner(Path.of("myfile"),StandardCharsets.UTF_8)

  在实现的过程中使用的eclipse编译器提示了这样的一个错误。



The method of is undefined for the type Path

  显示Path类中并没有of这种方法,去查了下官方文档,发现在Java18的文档中可以找到这个函数。

尝试解决的方案


  考虑到可能是我使用的jdk版本的问题,使用java -version命令发现我所使用的是JDK8,而JDK8中并没有这个方法。这是在JDK11之后添加的方法,所以我们在JDK8下调用这个方法会出现错误。接下来我们关注一下JDK8的官方文档。

在这里插入图片描述

  我们可以看到在java8的文档中也存在着类似功能的方法。但是并没有类似于.of方法的功能,但是在paths类中我找到了我们需要使用的方法。

在这里插入图片描述

  这里面的get方法会将给定的字符串转化为Path对象中。所以对于JDK8我们应该使用这样的方法来达到我们读取文件的目的。

 下面我们通过代码来验证这种方法:

点击查看代码

import javax.lang.model.element.VariableElement;
import static java.lang.Math.*;

import java.io.*;
import java.nio.*;
import java.util.*;

public class JavaDump {
	public static void main(String args[]) throws IOException {
		String dir = System.getProperty("user.dir");
		Scanner in = new Scanner(Paths.get(dir, "myfile.txt"), "UTF-8");
			System.out.println(in.nextLine());
			System.out.println(in.nextLine());
			System.out.println(in.nextLine());
			System.out.println(in.nextLine());
			System.out.println(in.nextLine());
			in.close();
		}
}

当然对于我们文件,文件的位置由IDE来控制,我们使用getProperty方法来得到这个路径,然后通过paths.get方法获得我们所需要的Path对象,通过这样的方式,我们成功的解决了报错,此外还需要注意的一点是在JDK8中Scanner的构造方法不可以直接接受
StandardCharsets
类型的对象,只能接收字符串形式的变量,所以我们要将先前的代码的参数改为”UTF-8″。

结果如下图:

image

结论

在我们使用各种方法的时候,要注意不同JDK版本间的差别,遇到问题需要多查JDK文档,选择自己的JDK版本号,避免遇到同样的问题。

今天的文章Java中Path.of()使用报错分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33897.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注