【问题标题】:How to use '//' in java while creating filejava - 创建文件时如何在java中使用'//'
【发布时间】:2016-10-03 11:09:51
【问题描述】:
  1. String testpath1 = "smb://host_address/File_Folder";
  2. 文件 testFile1 = new File(testpath1 + fi.getName());
  3. fi.write(testFile1);

这段Java代码在Linux服务器上读写文件。但是,创建文件后(在第 2 行),文件路径变为 smb:/host_address/File_Folder/File_Name

我希望文件路径为smb://host_address/File_Folder/File_Name

请帮忙!

【问题讨论】:

  • 问题前三行的列表是什么?不应该是代码块吗?
  • 是的,它是代码块。考虑到行号,它应该很容易阅读。
  • 我认为人们在阅读没有行号的三行代码时不会有问题。现在它没有被格式化为代码,这实际上使它更难阅读。请删除行号并将代码缩进四个空格以将其转换为代码块。堆栈溢出将负责使其可读:)

标签: java linux file


【解决方案1】:

Java File 类根据运行它的环境将路径名转换为抽象路径名。 .抽象路径名有两个组成部分:

  1. 可选的系统相关前缀字符串,例如磁盘驱动器说明符,“/”表示 UNIX 根目录,或“\\”表示 Microsoft Windows UNC 路径
  2. 零个或多个字符串名称的序列

我猜 Java 可能在您的情况下使用基于 Unix 的系统的抽象路径名,导致丢失一个 /

你需要使用 SmbFile 类来打开一个 SmbFile SmbFile file = new SmbFile(testpath1 + fi.getName()) 您可以查看SmbFile docJava File 了解更多信息。

【讨论】:

  • 谢谢贾努尔!我正在使用 FileItem (fi),它的 write 方法需要 File 对象。 fi.write(文件文件)。如果我使用 SmbFile 那么如何将 SmbFile 对象转换为文件?
  • 您可以在此处阅读更多内容。 stackoverflow.com/a/36473193/6912578
【解决方案2】:

编辑:方法不正确。

连续四个斜线可能会起作用。在 Java 和其他一些语言中,// 被简化为 /,因为 / 是用于插入不可见字符(如制表符和换行符)的转义字符。测试 ////

另请参阅:What are all the escape characters in Java?

【讨论】:

  • 据我了解,'\' 是一个转义字符。 '////' 不起作用:(
  • 听起来更准确,是的。祝你好运!
【解决方案3】:

没有得到在 java 中使用 '//' 的解决方案,但是如果任何开发人员想要使用 Java 编程在 Linux 服务器上上传文件,那么他/她可以使用下面的 sn-p。想法可能对像我这样的开发人员有帮助:)

SmbFile originalFile = new SmbFile(filePath + fi.getName());
InputStream in;
in = fi.getInputStream(); //fi is FileItem
SmbFileOutputStream out;
out = new SmbFileOutputStream(originalFile);
IOUtils.copy(in, out);
in.close();
out.close();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2011-02-27
    相关资源
    最近更新 更多