目前我有一个java应用程序,它加载了一个xml文件,并为用户提供了一个简单的gui来编辑xml文件的特定字段。但是,此xml将存在于网络路径上。只要用户已登录到网络位置,应用程序就会加载并执行。但是,如果他们没有专门连接到该位置,并且未登录"则应用程序将不会执行。
在加载文件时,有什么方法可以作为特定用户连接到网络路径?
感谢阅读。下面的代码片段。
private static final String wg01x = "\\\\0.0.0.0\\d$\\Variable_Namedropper_XMLs\\WG01_Variable_NameDropper_XML\\VancInsertionLabelDatelineTC.xml";
public Parser(String fp){
// File Path Of XMl
try{
this.setFilePath(fp);
}catch(Exception e ){
e.printStackTrace();
}
// Main DOM Object, Uses implicit FilePath
this.setDom(this.normalizeDocument());
public Document normalizeDocument(){
File xmlFile = new File(this.filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
return doc;
}catch(Exception e){
e.printStackTrace();
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity version="1.1.1.1"
processorArchitecture="X86"
name="NameDropper_wg01Y.exe"
type="win32"/>
<description>NameDropper</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
编辑::也欢迎使用替代方法。我应该能够访问/拥有网络位置(可能)
答案 0 :(得分:1)
一般来说,这是一个坏主意......我只是把它放在那里,因为它可能会弄乱元数据或者你有什么。
但我仍然会帮助,因为这很有趣。我相信它与你的normalizeDocument()上的File构造函数有关。我自己从来没有这样做,但我做了一些搜索,我认为这可能会帮助你。
答案 1 :(得分:0)
虽然@Syrrus发布的帖子在概念层面上是有用且有趣的,但我无法让它为我的目的而工作。
但是,我提出了一个有效的解决方法! 更新后的代码如下。该方法不是使用Java对象,而是与运行时环境交互并执行连接到该位置的cmd。 exec字符串在示例中没有正确格式化,因为我隐藏了当前硬编码到其中的用户信息
public Document normalizeDocument(){
File xmlFile = new File(this.filePath);
connectToNetworkLocation();
public void connectToNetworkLocation(){
try{
Process p = Runtime.getRuntime().exec("net use \\\\0.0.0.0\\c$ pword /USER:usr");
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while((line = reader.readLine()) != null){
System.out.println(line);
}
}catch(Exception e ){
e.printStackTrace();
}
}`