unc路径linux,将Java file:// URL转换为File(...)路径,与平台无关,包括UNC路径

该博客讨论了在Java中遇到的处理UNC路径(通用命名约定)的问题。作者通过测试uri.getAuthority()来识别UNC路径,并提供了一个临时的解决方法,即检查URI的权威部分是否不为空。此解决方案依赖于一个错误行为,但似乎在当前环境下是可行的。博客内容涵盖了Windows和OSX系统的测试情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Christian Fr..

11

基于对西蒙娜Giannis答案提供的提示和链接,这是我砍来解决这个问题.

我正在测试uri.getAuthority(),因为UNC路径将报告一个权威.这是一个错误 - 所以我依赖于一个错误的存在,这是邪恶的,但它似乎将永远存在(因为Java 7解决了java.nio.Paths中的问题).

注意:在我的上下文中,我将收到绝对路径.我在Windows和OS X上测试了这个.

(仍在寻找更好的方法)

package com.christianfries.test;

import java.io.File;

import java.net.MalformedURLException;

import java.net.URI;

import java.net.URISyntaxException;

import java.net.URL;

public class UNCPathTest {

public static void main(String[] args) throws MalformedURLException, URISyntaxException {

UNCPathTest upt = new UNCPathTest();

upt.testURL("file://server/dir/file.txt"); // Windows UNC Path

upt.testURL("file:///Z:/dir/file.txt"); // Windows drive letter path

upt.testURL("file:///dir/file.txt"); // Unix (absolute) path

}

private void testURL(String urlString) throws MalformedURLException, URISyntaxException {

URL url = new URL(urlString);

System.out.println("URL is: " + url.toString());

URI uri = url.toURI();

System.out.println("URI is: " + uri.toString());

if(uri.getAuthority() != null && uri.getAuthority().length() > 0) {

// Hack for UNC Path

uri = (new URL("file://" + urlString.substring("file:".length()))).toURI();

}

File file = new File(uri);

System.out.println("File is: " + file.toString());

String parent = file.getParent();

System.out.println("Parent is: " + parent);

System.out.println("____________________________________________________________");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值