使用java

时间:2015-06-11 15:30:40

标签: java

我对使用java从远程(在我们的网络内)位置读取文件的方式有所怀疑。我正在从Windows机器开发一个简单的Java应用程序,并且我能够以这种方式访问​​位于unix机器上的远程文件:

File fileToRead=new File(new URI(file:////192.168.0.27/export/myFile.txt))

使用相同的应用程序,我使用kubuntu开发的同事无法访问该文件。我得到FileNotFoundException。

可能是什么问题?

更新1 我想用jcfis来解决我的问题,但是在这个cas中,应用程序在windows上都可以在linux上运行吗?

3 个答案:

答案 0 :(得分:3)

我通过以下方式使用jcifs库解决了

SmbFile fileToRead= new SmbFile(smb://192.168.0.27/export/myFile.txt);

这适用于开发环境(Windows和Linux)

答案 1 :(得分:2)

编辑:OP指定了他想要使用的协议。这个答案没有使用该协议,因此它不再有效。

改为使用网址对象:

URL url = new URL("http://someaddress.com/somefile.txt");

使用此URL,您可以打开InputStream:

InputStream is = url.openStream();

您可以使用BufferedReader

阅读
BufferedReader br = new BufferedReader(new InputStreamReader(is));

编辑:假设可以使用HTTP下载文件,这将正常工作。

完整代码:

URL url = new URL("http://someaddress.com");
InputStream is = url.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
// You can read lines like this
String line = br.readLine();

答案 2 :(得分:0)

如果您使用的是FTP或HTTP,则可以直接使用@ AlphSpirit的答案。否则,您可以使用java.net.Socket并实现自己的协议(这比使用FTP或HTTP更容易,您需要在另一台计算机上运行java.net.ServerSocket。)

编辑你说你想使用JCFIS,因为它在Windows和Linux上都有效,但JRE也是如此。