`

File Path 相对路径

阅读更多

     

    最近在项目中想使用相对路径存放上传的apk包,所以研究了一下相对路径创建File的相关知识

 

    1 参考以前的代码,写下如下代码:

     

	public static void main(String[] args) throws IOException {
		File parentFile = new File("/intelStore/apk/test");
		if (!parentFile.exists()) {
			parentFile.mkdir();
		}
		System.out.println(parentFile.getAbsolutePath());
		File newFile = new File("/intelStore/apk/my.txt");
		if (!newFile.exists()) {
			newFile.createNewFile();
		}
		System.out.println(newFile.getAbsolutePath());
	}

   打印结果:   

 

 

F:\intelStore\apk\test
Exception in thread "main" java.io.IOException: 系统找不到指定的路径。

 

 

 

   在以前的项目中此段代码不会报错,自己写测试的时候会报错,在创建my.txt文件时会提示不存在此路径,可是代码已经创建父路径的文件夹了啊,然后单独允许如下代码:

     public static void main(String[] args) throws IOException {

		File parentFile = new File("/intelStore/apk/test");
		if (!parentFile.exists()) {
			parentFile.mkdir();
		}
		System.out.println(parentFile.getAbsolutePath());
	}

 

   打印结果:

F:\intelStore\apk\test

   

    到F盘去查看根本没有生成intelStore文件夹,仔细考虑了下,可能是java无法创建一个多层均不存在的文件夹目录,

    然后运行如下的代码:

   


		File parentFile = new File("/intelStore/apk/test");
		if (!parentFile.exists()) {
			parentFile.mkdir();
		}
		System.out.println(parentFile.getAbsolutePath());
	}

   发现此时可以创建文件夹intelStore,说明上面的猜想是对的,于是写了一个递归方法,去创建这样多层不存在的文件夹:

  

	public static void createFile (File file) {
		if (!Objects.equals(file, null)) {
			createFile(file.getParentFile());
			if (!file.exists()) {
				file.mkdir();
			}
		}

	}

 

  2 相对路径

     看网上说在Eclipse里创建相对路径的文件夹,文件夹的绝对路径为:workspace路径+ 项目+ 相对路径,可是经我测试如下代码:

     

	public static void main(String[] args) throws IOException {
		File parentFile = new File("/intelStore/apk/test");
		System.out.println(parentFile.getAbsolutePath());
		createFile(parentFile);		

	}

    打印结果为:

F:\intelStore\apk\test

   上面代码执行以后确实在F盘下创建了对应的文件夹    

    我项目的workspace路径为:F:\newWorkspace\readLocalPhoto,也就是说绝对路径并没有创建在workspace里的项目文件夹下,而是在项目所在根路径下创建的相对路径

 

   关于在tomcat里的web项目里运行此代码,网上很多人的说法是,会在tomcat的bin路径下创建相对路径,我在一个servlet里运行如下代码,

	protected void doPost(HttpServletRequest request,  
	        HttpServletResponse response) throws ServletException, IOException {  
		File parentFile = new File("/intelStore/apk/test");
		System.out.println(parentFile.getAbsolutePath());
		createFile(parentFile);
	} 

   结果:

D:\intelStore\apk\test

   并且在D盘下找到了创建的路径

   

   我的tomcat的路径在D盘下的某个文件夹,所以我感觉在tomcat的web里运行,相对路径应该创建在tomcat所在根目录下创建相对路径

 

 3 File Path

    在创建相对路径的File时,想使用jdk新特性Path来进行相关操作,代码如下:

    

	public static void main(String[] args) throws IOException {

		Path path = Paths.get("/intelStore/apk/test");
		System.out.println(path.toFile().getAbsolutePath());
		createFile(path);
	}

	public static void createFile(Path path) {
		int nameCount = path.getNameCount();
		for (int index = 0; index < nameCount; index++) {
			System.out.println(path.getName(index).toFile().getAbsolutePath());
		}
	}

  打印结果:

F:\intelStore\apk\test
F:\newWorkspace\NIODemo\intelStore
F:\newWorkspace\NIODemo\apk
F:\newWorkspace\NIODemo\test

   通过上面的代码发现,在使用相对路径的File和Path相互转换时,Path按照名称进行分割,会出现和File对应的路径不一致的情况

 

   而且分割后的Path会在workspace下的当前项目路径文件夹来存放相对路径,而不是项目所在的根路径来创建相对路径

 

 

 

 

 

分享到:
评论

相关推荐

    相对路径转换工具.rar

    有两种主要类型的路径:绝对路径和相对路径。绝对路径是从根目录开始的完整路径,而相对路径是相对于当前工作目录的路径。本篇文章将深入探讨绝对路径与相对路径的概念、它们之间的转换以及如何在C++、Java和Python...

    获取指定目录下的文件相对路径

    这个工具可能会接受一个参数,即要获取相对路径的文件或目录的绝对路径,然后返回相对于安装根目录的相对路径字符串。 在NSIS脚本中,我们可以这样使用`GetFileDir.exe`: ```nsis !include LogicLib.nsh Section...

    绝对路径与相对路径祥解

    在编程和系统管理中,了解和正确使用绝对路径与相对路径是至关重要的。尤其是在Perl这样的脚本语言中,路径的处理对于程序的正确执行起到关键作用。本文将深入解析这两个概念,帮助新手清晰理解它们的区别和用法。 ...

    相对路径小练习题.rar

    路径分为绝对路径和相对路径两种类型。本练习题主要关注的是相对路径,它是一种相对于当前工作目录来指定文件位置的方式。相对路径的使用有助于简化代码,尤其是在处理文件和目录操作时。 1. **相对路径的概念**: ...

    VB6.0相对路径打开文件示例程序

    "VB6.0相对路径打开文件示例程序" 提供了一个实用的范例,展示了如何在不指定完整文件系统路径的情况下,通过相对路径来访问和操作文件。相对路径是一种基于当前工作目录来指定文件位置的方法,它简化了程序的移植性...

    VB 相对路径的识别

    相对路径是相对于当前工作目录的路径,与绝对路径(完全指定文件或目录的位置)不同,它更灵活,方便在项目移动或部署时保持代码的可移植性。本篇将深入探讨VB中如何识别和使用相对路径。 首先,理解相对路径的基本...

    绝对路径和相对路径 文件目录IO常见操作汇总

    ### 绝对路径与相对路径概念解析及其在C#中的应用 #### 一、路径基础知识概览 在探讨路径操作之前,我们首先需要理解绝对路径和相对路径的基本概念。 **绝对路径**指的是从根目录开始直到文件所在位置的完整路径...

    Java相对路径总结

    例如,`new File("parent", "child")`会创建一个表示`parent/child`的相对路径。 4. **文件操作**:Java的`File`类提供了丰富的文件和目录操作方法,如`exists()`检查文件是否存在,`mkdirs()`创建多级目录,`...

    自建相对路径数据库访问

    例如,如果当前目录是"C:\Users\John\Documents",一个相对路径"subfolder\file.txt"实际上指的是"C:\Users\John\Documents\subfolder\file.txt"。 在建立数据库时,通常我们会选择一种数据库管理系统(如MySQL、...

    java类动态获取相对路径

    综上所述,通过结合`ClassLoader`、`getResource`和`File`等类,我们可以动态获取Java类的相对路径,实现对文件资源的有效管理。在实际应用中,可能还需要结合具体的项目结构和需求进行适当的调整。

    php相对路径解决方法

    2. 相对路径:相对于当前工作目录的路径,依赖于当前脚本的执行位置。 二、PHP中的路径处理 1. `__DIR__`魔术常量:它返回包含该文件的目录的绝对路径,可用于获取当前文件的上下文。 2. `dirname()`函数:返回路径...

    java绝对路径和相对路径

    ### Java中的绝对路径与相对路径 在Java编程中,路径管理是进行文件操作的重要组成部分,尤其是在Web应用开发中。本文将详细介绍如何在Java中获取不同类型的路径,包括Web服务器下的文件路径、本地路径以及相对路径...

    相对路径转绝对路径共1页.pdf.zip

    例如,如果你当前在目录“/home/user”,要引用子目录“documents”下的“file.txt”,相对路径可能是“documents/file.txt”。相对路径的灵活性在于它允许根据当前工作目录动态地定位资源,但这也意味着它的解析会...

    asp.net-文件上传控件加创建相对路径

    本文将深入探讨如何利用ASP.NET的文件上传控件以及如何创建相对路径来存储上传的文件。 首先,我们需要了解ASP.NET的FileUpload控件。FileUpload控件是一个HTML表单元素,允许用户选择一个或多个本地文件进行上传。...

    Path 路径求解

    - 相对路径:相对路径是从当前工作目录出发,到达目标文件或目录的路径。例如,如果你在`/home/user`目录下,`documents/file.txt`是一个相对于`/home/user`的路径。 - 绝对路径:绝对路径是从根目录开始,到目标...

    matlab开发-absolutepath

    例如,如果你的相对路径是"%USERPROFILE%\Documents\file.txt",`absolutepath`会解析环境变量并返回对应的绝对路径。 除了`absolutepath`,MATLAB还提供了其他与路径相关的函数,如`pwd`(获取当前工作目录)、`cd...

    C#文件的读取与写入操作(注释详尽,相对路径,直接运行,测试成功!)

    如果需要使用相对路径,可以利用`AppDomain.CurrentDomain.BaseDirectory`获取到这个目录,然后拼接上相对路径: ```csharp string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "myFile.txt...

    java区分绝对路径和相对路径的方法.docx

    例如,如果你当前位于`/home/user`,相对路径`documents/file.txt`会指向`/home/user/documents/file.txt`。在Windows系统中,相对路径同样使用反斜杠,但不强制以盘符开头,而是相对于当前目录。如果当前目录是`C:\...

Global site tag (gtag.js) - Google Analytics