我正在尝试使用以下代码在共享文件夹中创建文件。当我在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());
}
}
答案 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