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

时间:2017-07-13 17:39:43

标签: java linux redhat

我正在尝试使用以下代码在共享文件夹中创建文件。当我在Windows上运行此代码时,我能够做到这一点。但是,当我在linux上运行相同的代码时,它无法正常工作。

在liunx中,它正在创建一个名为" \ 192.168.1.102 \ share \ 1.pdf"在我运行此java代码的文件夹中,而不是在共享文件夹中创建文件1.pdf" \ 192.168.1.102 \ share \"。

似乎在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 个答案:

答案 0 :(得分:0)

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

您必须在使用前装载共享文件夹。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

(1)请在文件路径中使用java函数File.separator而不是“\”,以使其与平台无关。

由于Windows支持“\\”而linux支持“/".

(2)使用 chmod 命令检查您是否有权在该目录上书写。

答案 3 :(得分:-1)

假设文件系统已正确安装在您正在使用的路径中,则代码将无法跨平台运行,因为Windows中的路径使用\作为段分隔符,而Linux中的路径使用{{ 1}}。

您应该使用跨平台代码来生成路径。 /类有一个名为File的静态String成员,该成员将拥有该平台的正确值。

separator

以上内容将在Windows中生成String myPath = File.separator + "home" + File.separator + "bob" ,在Linux / OSX中生成\home\bob