Java无法从Linux创建Windows共享文件夹中的文件

3
我正在尝试使用下面的代码在共享文件夹中创建文件。当我在Windows上运行此代码时,我能够成功创建文件。但是当我在Linux上运行相同的代码时,它无法正常工作。
在Linux上,它会在我运行Java代码的文件夹中创建一个名为“\ 192.168.1.102 \ share \ 1.pdf”的文件,而不是在共享文件夹“\ 192.168.1.102 \ share \”中创建一个名为1.pdf的文件。
似乎在Linux上运行时,服务器无法识别该路径为共享位置,而是将其读取为本地路径。
有没有其他方法可以在共享文件夹中创建文件?请问是否有人能帮助我解决这个问题?
public class Test {

    public static void main(String args[]) {

        String s1 ="\\\\192.168.1.102\\share";
        try{

            FileOutputStream fos = new FileOutputStream(s1+"\\1.pdf");
            fos.write(("Testing Success").getBytes());
            fos.close();
        }
        catch(Exception e){
            e.printStackTrace();
            System.out.println(e.toString());
        }

        File file = new File(s1);
        System.out.println(file.exists());
    }
}
4个回答

1

Linux不支持\\ip\folder路径语法。

您需要在使用之前挂载共享文件夹。


0

检查您是否具有足够的权限在共享文件夹上写入文件。或尝试以管理员身份运行您的代码的Jar文件。


0

(1) 请使用Java函数File.separator代替文件路径中的“\”,以使其具有平台独立性。

因为Windows支持“\\”,而Linux支持“/”。

(2) 使用chmod命令检查您是否有在该目录中写入的权限。


-1
假设文件系统在您使用的路径中正确挂载,该代码将无法跨平台工作,因为Windows中的路径使用\作为段分隔符,而Linux中的路径使用/
您应该使用跨平台代码来生成路径。File类有一个名为separator的静态String成员,它将具有适合平台的正确值。
String myPath = File.separator + "home" + File.separator + "bob"

以上代码将在 Windows 中生成 \home\bob,在 Linux/OSX 中生成 /home/bob

它仅仅是问题的一部分,//192.168.1.102/share/1.pdf 也不起作用。 - talex
这就是为什么我说“假设文件系统已经正确挂载” :) 路径在语法上是有效的。 - salezica
@slezica,你能告诉我如何在Linux中正确挂载文件系统吗?当我尝试时,出现了“mount Error 112 Server is down”的错误提示。 - Prakash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接