java 文件读写,查找文件部署的位置

PathUtil.getClasspathFile("test.txt")  //这样就可以查找

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;

public enum PathUtil {
    INSTANCE;
    private static String webRootPath;

/**
     * 指定类的编译路径
     * @param clazz
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static String getPath(Class clazz) {
        String path = clazz.getResource("").getPath();
        return new File(path).getAbsolutePath();
    }

public static String getPath(Object object) {
        String path = getPath(object.getClass());
        return new File(path).getAbsolutePath();
    }

/**
     * 项目编译路径
     * @return
     */
    public static String getClassPath() {
        String path = PathUtil.class.getClassLoader().getResource("").getPath();
        return new File(path).getAbsolutePath();
    }

/**
     * 指定对象所属的包
     * @param object
     * @return
     */
    public static String getPackagePath(Object object) {
        Package p = object.getClass().getPackage();
        return p != null ? p.getName().replaceAll("\\.", "/") : "";
    }

public static String getWebRootPath() {
        return webRootPath == null ? detectWebRootPath() : webRootPath;
    }

public static void setWebRootPath(String rootPath) {
        if (rootPath.endsWith(File.separator)) {
            rootPath = rootPath.substring(0, rootPath.length() - 1);
        }
        PathUtil.webRootPath = rootPath;
    }

private static String detectWebRootPath() {
        try {
            String path = PathUtil.class.getResource("/").getFile();
            return new File(path).getParentFile().getParentFile().getCanonicalPath();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

public static InputStream fromClassPath(String fileName) {
        if (!fileName.startsWith("/"))
            fileName = "/" + fileName;
        return PathUtil.class.getResourceAsStream(fileName);
    }

public static InputStream fromJar(String fileName) {
        return PathUtil.class.getClassLoader().getResourceAsStream(fileName);
    }

/**
     * 文件的绝对路径
     * @param path
     * @return
     */
    public static String toAbsolutePath(String path) {
        if (StringUtil.empty(path)) {
            return null;
        }
        File file = new File(path);
        if ((!file.exists()) || (path.startsWith("classpath:"))) {
            file = getClasspathFile(path);
            return file.getAbsolutePath();
        }
        return path;
    }

public static File getClasspathFile(String classpath) {
        String input = classpath;
        if (classpath.startsWith("classpath:")) {
            input = classpath.substring(10);
        }
        URL url = getDefaultClassLoader().getResource(input);
        if ((url == null) || (!url.getProtocol().equals("file"))) {
            return null;
        }
        return toFile(url);
    }

public static ClassLoader getDefaultClassLoader() {
        ClassLoader cl = null;
        try {
            cl = Thread.currentThread().getContextClassLoader();
        } catch (Throwable ex) {
        }
        if (cl == null) {
            cl = PathUtil.class.getClassLoader();
        }
        return cl;
    }

public static File toFile(URL url) {
        if ((url == null) || (!url.getProtocol().equals("file"))) {
            return null;
        }
        String filename = url.getFile().replace(‘/‘, File.separatorChar);
        int pos = 0;
        while ((pos = filename.indexOf(‘%‘, pos)) >= 0) {
            if (pos + 2 < filename.length()) {
                String hexStr = filename.substring(pos + 1, pos + 3);
                char ch = (char) Integer.parseInt(hexStr, 16);
                filename = filename.substring(0, pos) + ch + filename.substring(pos + 3);
            }
        }

return new File(filename);
    }

public static void main(String[] args) {
        System.out.println(PathUtil.getClasspathFile("test.txt"));  //相对路径
    }

}

时间: 2025-01-13 06:23:29

java 文件读写,查找文件部署的位置的相关文章

文件操作ofstream,open,close,ifstream,fin,按照行来读取数据, fstream,iosin iosout,fio.seekg(),文件写入和文件读写,文件拷贝和文件

 1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; //通过ofstream的方式实现写入文件 open,close void main() { ofstream fout;  //ofstream输出文件 fout.open("E:\\1.txt");//打开文件 fout << "1234abcdef";

文件操作ofstream,open,close,ifstream,fin,依照行来读取数据, fstream,iosin iosout,fio.seekg(),文件写入和文件读写,文件拷贝和文件

 1.ofstream,open,close 写入文件 #include<iostream> #include<fstream> using namespace std; //通过ofstream的方式实现写入文件 open,close void main() { ofstream fout;  //ofstream输出文件 fout.open("E:\\1.txt");//打开文件 fout << "1234abcdef";

用opencsv文件读写CSV文件

首先明白csv文件长啥样儿: 用excel打开就变成表格了,看不到细节 推荐用其它简单粗暴一点儿的编辑器,比如Notepad++, csv文件内容如下: csv文件默认用逗号分隔各列. 有了基础的了解就进入主题,用Opencsv读写csv文件 读:CSVReader 写:CSVWriter 下面分别来看一下opencsv为我们提供的方法(这里只介绍最常用的几个): 读:CSVReader 构造器中涉及三个参数: reader:就是读取文件的流对象,常用的有BufferedReader,Input

Linux Direct 文件读写(文件DIO)

有时候,读写文件并不想要使用系统缓存(page cache),此时 direct 文件读写就派上了用场,使用方法: (1)打开文件时,添加O_DIRECT参数: 需要定义_GNU_SOURCE,否则找不到O_DIRECT宏定义 示例片段: #define _GNU_SOURCE #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int fd = open("test.out"

java如何读写json文件

在实际项目开发中,有时会遇到一些全局的配置缓存,最好的做法是配置redis数据库作为数据缓存,而当未有配置redis服务器时,读取静态资源文件(如xml.json等)也是一种实现方式,但是这有一个弊端,因为作为静态资源存储在站内势必就导致信息的安全性很低,所以如果采用这种方式则建议记录一些安全要求很低的配置属性,当然最好的做法就是使用redis缓存技术.下面就json文件的读写进行进一步说明. 1.json通用文件读取方法,这个方法会返回map对象: /** * json读取 * * @para

利用基因ID去gtf文件中查找基因相应的位置及正反义链并提取相应的序列

#!/usr/bin/env pythondef splic_seq_2(fa,r_id_,g_id_,position_1,position_2,strand):    import sys    import Anti_#   sequence_file= open(options.fasta_seq)    sequence_file=open(fa)    seq_line= sequence_file.readline()#   for seq_line in sequence_fil

java如何读写txt文件

package readAndWrite; import java.io.*; public class TXT {     public static void main(String[] args) throws IOException     {         String readSource = "F:\\ReadTXT.txt";         FileInputStream fis = new FileInputStream(readSource);         

Java学习——读写txt文件

package HHH; import java.io.*; import static java.lang.System.out; public class OpenFile { public static void main(String[] args) { // TODO Auto-generated method stub try{ FileInputStream rf = new FileInputStream("openFile.txt"); FileOutputStrea

Java读写资源文件类Properties

Java中读写资源文件最重要的类是Properties 1) 资源文件要求如下: 1.properties文件是一个文本文件 2.properties文件的语法有两种,一种是注释,一种属性配置. 注    释:前面加上#号 属性配置:以“键=值”的方式书写一个属性的配置信息. 3.properties文件的一个属性配置信息值可以换行,但键不可以换行.值换行用“\”表示. 4.properties的属性配置键值前后的空格在解析时候会被忽略. 5.properties文件可以只有键而没有值.也可以仅

【Java】【21】读写Json文件

正文: 1,通用读取方法,返回map public static List<Map> JsonRead(HttpServletRequest request, String path) { List<Map> maps = null; String dir = request.getSession().getServletContext().getRealPath(path); System.out.println(path); System.out.println(dir); i