是否可以使用java将文件写入远程目录?

是否可以使用java将文件写入远程目录?,java,webdav,oracle-xml-db-repository,Java,Webdav,Oracle Xml Db Repository,我把目录映射到我的机器上,这样我就可以通过Windows资源管理器浏览和写入它。我想通过java编写文件 File f = new File("http://dev1:8080/data/xml/myTestFile123.xml"); f.createNewFile(); 我得到以下错误: File f = new File("http://dev1:8080/data/xml/myTestFile123.xml"); f.createNewFile(); Exception in t

我把目录映射到我的机器上,这样我就可以通过Windows资源管理器浏览和写入它。我想通过java编写文件

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
我得到以下错误:

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
Exception in thread "main" java.io.IOException: The filename, directory name, or volume label syntax is incorrect
    at java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(Unknown Source)
    at MainTest.createTestFile(MainTest.java:156)
    at MainTest.main(MainTest.java:72)

有没有办法将文件写入前面有http://的映射目录?因为这就是目录提供给我的方式。这是一个oracle数据库正在创建的虚拟目录。

我不太清楚我在这里说的是什么(不是Java的家伙),但尽管您可能“映射了它”,但您传递的是一个URL,而不是预期的文件系统路径。如果(例如)您在Windows下有一个映射驱动器,请使用分配的驱动器号。

您正在尝试使用协议传递位置URI。您需要通过位置SAN协议:

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
\\dev1\data\xml\myTestFile123.xml

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();

您是如何在Windows中映射该文件的?我怀疑它没有使用HTTP协议,因为不存在创建文件的机制。因此,使用“http”作为协议,您将一事无成

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
找到映射的驱动器号,您可能需要类似以下内容:

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
File f = new File("F:\\dir\\file.ext");
如果您正在使用Samba,您可能希望了解一下,然后可以使用:

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
smb://server/share/
使用本地路径
如果可以在windows资源管理器中看到
myTestFile123.xml
,请右键单击它并复制
位置:
属性值。然后将其用作new File()参数,但可以将反斜杠加倍或将其更改为正斜杠。

与其尝试使用映射的驱动器号(看起来很弱),不如看看:

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
JCIFS是一个开源客户端库,它在100%Java中实现CIFS/SMB网络协议。CIFS是Microsoft Windows平台上的标准文件共享协议(如地图网络驱动器…)。该客户端广泛用于大型内部网的生产

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
这段代码展示了如何使用jCifs登录到远程计算机并编写文件(归功于Muneeb Ahmad):

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();

编辑:正如在原始问题中添加的评论所述,我现在的理解是,您正在尝试写入WebDAV目录。为了更清楚,我将在另一个答案中介绍WebDAV主题。

我的理解是,您正在尝试向一个用户写信。Oracle XML DB Repository是Oracle9i Database Release 2为XML存储引入的一项功能,可以通过FTP或HTTP/WebDAV进行访问。在您的情况下,看起来您正在尝试使用HTTP/WebDAV

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
如维基百科页面所述:

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
WedDAV是上的一组扩展 HTTP的顶部,允许用户编辑 并在上协作管理文件 远程万维网服务器

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
换句话说,在WebDAV存储库中添加文件、删除文件、重命名文件等都是使用HTTP单词完成的:PUT、DELETE、MOVE等(有关更多详细信息,请参阅)

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
因此,可以使用
java.net
中的类与WebDAV服务器进行交互

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
或者您可以使用更高级别的API,如

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
或者您可以使用项目提供的Java WebDAV客户端。这显示了如何做,而且看起来很简单。然而,由于幻灯片项目现在已经退役,我不推荐它

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();
幸运的是(或不是),该项目是幻灯片的替代方案。。。但是,Jackrabbit中的WebDAV支持更侧重于服务器端实现,而不是客户端。无论如何,您会在jackrabbit用户邮件列表中找到一些代码示例

File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();

我想我应该选择HttpClient并使用或作为起点。

不能将HTTP URL硬塞进文件对象中。它们是两个完全不同的东西。那么我如何将文件授权到此驱动器?@joe,您的文件位于dev1:8080/data/lo/xml这一事实强烈表明您正在通过网站查看目录列表。无法通过http写入文件。您可以上传它们,但另一端的某些东西需要配置以接收和保存它们,它不仅仅是一个打开的文件存储,就像硬盘上的目录一样。@joe:您是想写入网络共享还是webdav服务器?我开始认为您正在尝试写入webdav目录…它是oracle数据库提供的虚拟目录我无法通过字母驱动器访问它我必须使用dev1:8080/data/lo/xmlI只能映射它,所以它显示dev1:8080/data/lo/xml如果您在获取URI的正确字符串时遇到问题,然后我会在资源管理器中导航到该文件,然后从地址栏中复制该目录。谢谢这可能会有所帮助,尽管我仍然需要找到一种使用http://的方法。。什么是smb:是否必须映射驱动器?不必在其中包含http://文件。HTTP不是用于处理远程文件系统的协议。SMB是一种不同的协议,它是为处理远程文件系统而设计的,也是Pascal告诉您如何使用的协议。我的远程目录是由oracle数据库创建的虚拟目录,它实际上并不存在。哦……当您说“windows资源管理器”时,您的意思是“internet explorer”?
File f = new File("http://dev1:8080/data/xml/myTestFile123.xml");

f.createNewFile();