JAVA最直接的IO操作,就是用JAVA获取文件
最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file = new File("c:/test.txt")
这样的问题,就是直接使用绝对路径。
那么,我们有什么方法可以更好地获得文件呢?
那就是Class.getResource()与Class.getResourceAsStream()方法!
比如我们有以下目录
|--project
|--src
|--packagename
|--Test.java
|--file1.txt
|--file2.txt
|--build
|--packagename
|--Test.class
|--file3.txt
|--file4.txt
在上面的目录中,有一个src目录,这是JAVA源文件的目录,有一个build目录,这是JAVA编译后文件(.class文件等)的存放目录
那么,我们在Test类中应该如何分别获得
file1.txt file2.txt file3.txt file4.txt这四个文件呢?
首先讲file3.txt与file4.txt
file3.txt:
方法一:File file3 = new File(Test.class.getResource("file3.txt").getFile());
方法二:File file3 = new File(Test.class.getResource("/packagename/file3.txt").getFile());
方法三:
File file3 = new File(Test.class.getClassLoader().getResource("packagename/file3.txt").getFile());
file4.txt:
方法一:File file4 = new File(Test.class.getResource("/file4.txt").getFile());
方法二:File file4 = new File(Test.class.getClassLoader().getResource("file4.txt").getFile());
很好,我们可以有多种方法选择,但是file1与file2文件呢?如何获得?
答案是,你只能写上它们的绝对路径,不能像file3与file4一样用class.getResource()这种方法获得,它们的获取方法如下
假如整个project目录放在c:/下,那么file1与file2的获取方法分别为
file1.txt
方法一:File file1 = new File("c:/project/src/javaapplication/file1.txt");
方法二:。。。没有
file2.txt
方法一:File file2 = new File("c:/project/src/file2.txt");
方法二:。。。也没有
总结一下,就是你想获得文件,你得从最终生成的.class文件为着手点,不要以.java文件的路径为出发点,因为真正使用的就是.class,不会拿个.java文件就使用,因为java是编译型语言嘛
至于getResouce()方法的参数,你以class为出发点,再结合相对路径的概念,就可以准确地定位资源文件了,至于它的根目录嘛,你用不同的IDE build出来是不同的位置下的,不过都是以顶层package作为根目录,比如在Web应用中,有一个WEB-INF的目录,WEB-INF目录里面除了web.xml文件外,还有一个classes目录,没错了,它就是你这个WEB应用的package的顶层目录,也是所有.class的根目录“/”,假如clasaes目录下面有一个file.txt文件,它的相对路径就是"/file.txt",如果相对路径不是以"/"开头,那么它就是相对于.class的路径。。
还有一个getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,再new InputStream(file)一样的结果
分享到:
相关推荐
在"Java.SE.Lesson.2_code"中,他可能详细讲解了Java SE的第二课内容,包括但不限于类、对象、封装、继承、多态等面向对象编程的基本概念。 【源代码】 "code"文件夹中包含的应该是与视频教学配套的源代码。这些源...
【Java.SE.Lesson.4_code.rar】这个压缩包文件包含了北京圣思园Java培训课程的第四课时的源代码,主要关注的是Java Standard Edition(Java SE)的相关编程知识。Java SE是Java平台的核心,用于开发和运行桌面应用...
Java SE 8是Java平台标准版的第八个主要版本,它引入了多项重要的新特性,如lambda表达式、函数式编程接口、Stream API以及日期与时间API的改进。这些新特性极大地提高了代码的简洁性和执行效率,使得Java在处理并发...
【Java.SE.Lesson.5_code.rar】这个压缩包文件显然包含了北京圣思园Java培训课程中的第五课时的源代码。这通常意味着我们将深入到Java编程语言的核心概念中,特别是那些在Java Standard Edition(Java SE)环境下的...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
对于初学者来说,了解并掌握Java SE的基础知识是成为Java程序员的第一步。下面将详细介绍标题和描述中提及的一些关键知识点。 1. **Hello World**:这是所有编程语言入门的经典示例,用于验证环境配置是否正确。在...
1. **Java基础语法**:这是学习Java的第一步,包括变量、数据类型、运算符、流程控制(如if语句、for循环、while循环)、方法、类和对象的创建等。 2. **面向对象编程**:Java是一种纯面向对象的语言,重点在于封装...
// 访问第一个元素 ``` **4. 数组遍历** ```java for (int i = 0; i < arr.length; i++) { System.out.println(arr[i]); } ``` #### 三、面向对象思想 Java 是一种面向对象的语言,支持封装、继承和多态等特性...
【IBM培训教程---Java SE应用程序设计】是一份专注于Java编程的教育资源,虽然缺失了第一章、十二章和十三章,但保留的章节涵盖了Java语言的核心概念和技术。这份教程由IBM提供,意味着它可能包含了IBM对Java SE应用...
Java SE(标准版)是Java编程的基础,涵盖了广泛的知识领域,包括面向对象编程、图形用户界面、数据库编程、文件I/O流、网络编程以及多线程等。在学习Java SE时,我们需要理解其核心概念,并逐步深入各个技术点。 ...
【SE_JAVA_EXP_E046.zip】是一个与Java编程相关的学习资源,它包含了易智教云课堂上一道练习题的满分答案。这道习题可能是面向正在学习Java编程的学生们,旨在帮助他们理解和掌握Java语言的核心概念和编程技巧。由于...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
### 第一章:编程基础 #### 1. Java的特性和优势 - **简单性**:易于理解和使用。 - **面向对象**:支持封装、继承和多态等特性。 - **可移植性**:遵循“一次编写,到处运行”的原则。 - **高性能**:通过JIT...
- Java 1.1:Java的第一个重要更新,引入了多线程和垃圾回收等特性。 - Java 1.2:增加了Java Foundation Classes (JFC)和Swing库,提高了GUI开发能力。 - Java 1.3:主要优化了性能,加强了网络功能。 - Java ...
在"VIP09_JavaSE_JavaIO_File_day0307-1.rar"这个压缩包中,我们可以预想它包含的是一个关于Java IO和File类的课程或教程的第三天第七节的内容。下面,我们将深入探讨Java IO和File类的相关知识点。 1. **Java IO...
java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,它提供了一种机制,能够在两个与 GUI 中显示元素逻辑相关的实体之间传输信息。 java.awt.event 提供处理由 AWT 组件所激发的...
由于比较大分为两个部分,这是第一部分 java.applet 提供创建 applet 所必需的类和 applet 用来与其 applet 上下文通信的类。 java.awt 包含用于创建用户界面和绘制图形图像的所有类。 java.awt.color 提供用于...
1. **异常处理**:在Java中,异常是一种程序运行时的错误。Java提供了强大的异常处理机制,包括try-catch-finally语句块,以及自定义异常类。学习这一部分可以帮助我们编写健壮的代码,确保程序在遇到错误时能够优雅...
JAVA-SE入门学习——第九讲IO流 在 Java 中,IO 流(Input/Output Stream)是一种基本的输入/输出机制,它允许程序读取和写入各种类型的数据。IO 流是 Java 编程语言的核心组件之一,它提供了一种通用的方式来处理...