Java中关于文件路径读取问题的分析

Java读取文件路径

记录一种通用获取文件绝对路径的方法,即使代码换了位置了,这样编写也是通用的:

注意:
使用以下方法的前提是文件必须在类路径下,类路径:凡是在src下的都是类路径。

1.拿到User.properties文件的绝对路径:

package com.lxc.domain;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class Test {
    public static void main(String[] args) {
        try {
            /**
             * Thread.currentThread() 当前线程对象
             * getContextClassLoader() 线程方法,获取的是当前线程的类加载器对象
             * getResource("") 这是类加载器对象的方法,当前线程的类加载器默认从类的根路径下加载资源
             *
             */
            String path = Thread.currentThread().getContextClassLoader().getResource("User.properties").getPath();
            System.out.println(path);
            FileReader reader = new FileReader(path);
    }
}

2.还可以以流的方式直接获取到文件流,直接加载

package com.lxc.domain;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Fanshe {

    public static void main(String[] args) {
        // 以流的方式读取
        InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("com/lxc/domain/userProperties.properties");
        Properties properties = new Properties();
        try {
            properties.load(inputStream);
            inputStream.close();
            System.out.println(properties.getProperty("username"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

这里还要注意一个小点:
资源配置文件放到resource文件夹下和放到包路径下,打包编译之后资源文件的存放位置会不一样,放到resource文件夹下打包编译值后的位置在classes文件夹下:

放到包文件夹,打包编译值后的位置在相应的包下:

3.通过资源绑定器获取到资源文件信息

使用资源绑定器获取资源文件信息,前提:
(1)资源文件必须在类路径下,如果不在resource文件夹下,而是在包下,处理方式如下;
(2)参数不需要带后缀

package com.lxc.domain;

import java.util.ResourceBundle;

public class Fanshe {

    public static void main(String[] args) {
        ResourceBundle resourceBundle = ResourceBundle.getBundle("User");
        String username = resourceBundle.getString("username");
        System.out.println(username);
    }

如果在包文件夹下,路径应该这样写:

package com.lxc.domain;

import java.util.ResourceBundle;

public class Fanshe {

    public static void main(String[] args) {
        ResourceBundle resourceBundle = ResourceBundle.getBundle("com/lxc/domain/User");
        String username = resourceBundle.getString("username");
        System.out.println(username);
    }
}

到此这篇关于Java中关于文件路径读取问题的分析的文章就介绍到这了,更多相关Java读取文件路径内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 浅谈Java工程读取resources中资源文件路径的问题

    正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径.在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例. 本地读取资源文件 java类中需要读取properties中的配置文件,可以采用文件(File)方式进行读取: File file = new File("src/main/resources/properties/basecom.properties"); InputStream in = new

  • Java获取文件路径常用方法解析

    1. 前言 Java 开发中我们经常要获取文件的路径,比如读取配置文件等等.今天我们就关于文件的路径和如何读取文件简单地探讨一下. 2. 文件的路径 文件的路径通常有 相对路径 与 绝对路径. 2.1 相对路径 以当前文件为基准进行一级级目录指向被引用的资源文件.在 Java 代码中以当前运行的代码所在的位置为参照位置,只要被引用的文件相对于引用的文件的位置不变就可以被读取到.一旦改变相对位置就无法被读取到. 2.2 绝对路径 文件在文件系统中真正存在的路径,是指从硬盘的根目录(Windows为

  • java 读取文件路径空格、"+"和中文的处理方法

    有时候在java代码中读取文件,如果文件所在路径包含空格."+"号或者是中文的时候,由于这些特殊的字符会被进行编码转译,所以就会报没有发现文件的错误,那么遇到这种错误,我们就要把编码过后的路径进行解码,这样才能正确的找到文件.主要的解决方法有一下三种方法: 解决方法 1.替换法 比如文件路径如果存在空格,那么会被转译成"%20",那么就可以利用字符串替换,把"%20"传化成空格,这样就能正确的找到文件了.这是这种如此暴力,低级的处理方法,一般有经

  • java 获取项目文件路径实现方法

    this.getClass().getResource("/").getPath().substring(1)获得路径为E:/myeclipse/test/WebRoot/WEB-INF/classes/,即主目录. this.getClass().getResource("").getPath().substring(1)获得路径为E:/myeclipse/test/WebRoot/WEB-INF/classes/net/hncu/db/,即本文件的相对路径. t

  • Java读取其下所有文件夹与文件路径的方法

    Java读取其下所有文件夹与文件的路径,具体内容如下 如果在f:\aa文件夹中,有如下图的文件夹与文件: 那么,在Java中,则如此读取f:/aa下的所有文件路径: 1.首先由于用到了文件与容器类下的ArrayList,所以在开头要引入如下包: import java.io.*; import java.util.*; 2.方法如下,其中File dirFile除了盘符,比如f:,以外,能够接受一切合法的路径.由于盘符下含有一些系统文件,拒绝访问,因为读取盘符,可能会出现空指针异常. //这里是

  • 深入分析java文件路径的详解

    Java中使用的路径,分为两种:绝对路径和相对路径.归根结底,Java本质上只能使用绝对路径来寻找资源.所有的相对路径寻找资源的方法,都不过是一些便利方法.不过是API在底层帮助我们构建了绝对路径,从而找到资源的!在开发Web方面的应用时, 经常需要获取 服务器中当前WebRoot的物理路径.如果是Servlet , Action , Controller, 或则Filter , Listener , 拦截器等相关类时, 我们只需要获得ServletContext, 然后通过ServletCon

  • Java中关于文件路径读取问题的分析

    Java读取文件路径 记录一种通用获取文件绝对路径的方法,即使代码换了位置了,这样编写也是通用的: 注意: 使用以下方法的前提是文件必须在类路径下,类路径:凡是在src下的都是类路径. 1.拿到User.properties文件的绝对路径: package com.lxc.domain; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.

  • Java中实现文件上传下载的三种解决方案(推荐)

    java文件上传与文件下载是程序开发中比较常见的功能,下面通过本文给大家介绍Java中实现文件上传下载的三种解决方案,具体详情如下所示: 第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null; String fileAddre="/numUp"; try { InputStream stream = file.getInputStream(

  • java中压缩文件并下载的实例详解

    当我们对一些需要用到的资料进行整理时,会发现文件的内存占用很大,不过是下载或者存储,都不是很方便,这时候我们会想到把文件变成zip格式,即进行压缩.在正式开始压缩和下载文件之前,我们可以先对zip的格式进行一个了解,然后再就具体的方法给大家带来分享. 1.ZIP文件格式 [local file header + file data + data descriptor]{1,n} + central directory + end of central directory record 即 [文件

  • 详谈python在windows中的文件路径问题

    在使用python通过open()函数来打开文件的时候,传递绝对路径给open()的时候,发现路径参数的内容与想象中的有所出入: 由于windows的路径分隔符使用的是反斜杠\,它刚刚好是转义字符,故可能发生冲突 # 错误示范:反斜杠似乎被解释为转义字符而不是分隔字符 path = '''F:\Python\test.txt''' path = '''F:\\Python\test.txt''' """以下三种方式都是可行的""" path =

  • 浅谈Java中File文件的创建以及读写

    1.创建一个文件 @Test public void test6() throws IOException { File file1 = new File("C:\\IDEA\\h1.txt"); if(!file1.exists()){//文件不存在 file1.createNewFile(); System.out.println("创建成功"); }else{//文件存在 file1.delete(); System.out.println("删除成

  • 解决Java中properties文件编码问题

    目录 1.properties文件显示乱码问题 2.读取properties文件乱码 3.Spring boot的@ConfigurationProperties读取properties文件乱码 总结 1.properties文件显示乱码问题 原因是因为properties默认使用ASCII码,就算在文件中填写了中文,再打开后依然会转换成ASCII码的形式.首先确定properties配置文件的编码格式,通常情况下properties的默认编码格式为ISO-8859-1.更改properties

  • Java中I/O流读取数据不完整的问题解决

    目录 一·问题描述: 二·问题原因: 三·解决办法: 四·测试结果:成功 一·问题描述: 1.利用Java的转换流去读取一个json文件数据,获取的数据无法被解析为json格式数据(格式总是报错),且获取的数据末尾缺少一部分数据. (1)Java源代码如图 (2)原json文件如图 (3)解析获取的数据如图:转换为json格式数据报错 二·问题原因: 1.最后一次缓存数组里面的数据,没有拼接到最终字符串数据里面 2.stringBuffer.append(buffer)拼接数据的方法,内部可能会

  • 详解JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过MessageDigest类进行MD5加密,第三步转换成16进制的MD5码值.几种方法的不同点主要在第一步和第三步上.具体可以看下面的例子: 方法一. private final static String[] strHex = { "0", "1", "2"

  • Java中获取类路径classpath的简单方法(推荐)

    如下所示: <SPAN style="FONT-SIZE: 18px"> System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("java.class.path"); String path2 = FreeMarkerWriter.class.getProtectionDomain().getCodeSource().getLo

  • Python3.6-MySql中插入文件路径,丢失反斜杠的解决方法

    如下所示: 如上图,replace即可. 以上这篇Python3.6-MySql中插入文件路径,丢失反斜杠的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐