【问题标题】:Programatically Created Files of the Same Type and Name以编程方式创建的相同类型和名称的文件
【发布时间】:2012-12-20 19:02:45
【问题描述】:

我的应用程序如何设法上传(到 FTP 服务器)相同名称和类型的文件的副本,而不是覆盖第一个文件?

2012-11-09.log      52  Text Document       11/9/2012 8:44:00 PM        -rw-rw-r--
2012-11-09.log      49  Text Document       11/9/2012 8:41:00 PM        -rw-rw-r--
2012-11-09.log      59  Text Document       11/9/2012 8:44:00 PM        -rw-rw-r--
2012-11-09.log      53  Text Document       11/9/2012 8:41:00 PM        -rw-rw-r--
2012-11-09.log      57  Text Document       11/9/2012 8:40:00 PM        -rw-rw-r--

我如何写入 FTP 服务器并没有什么特别之处。这是一个Java sn-p:

String dest = "ftp://[USERNAME]:[PASSWORD]@[FTP].com/DR/"+Util.putDateStamp() + ".log";
u = new URL(dest);
uc = u.openConnection();
uc.setDoOutput(true);
OutputStream outgoing = uc.getOutputStream();

outgoing.write(dataToSend.getBytes());
outgoing.close();

我无法重命名或删除文件,因为它会引发错误“找不到文件”。不幸的是,我重现它的努力符合预期——它覆盖了第一个同名文件。所以,我无法重现该错误。请记住,我在 FTP 服务器上的权限有限。它不是我的。我最后的手段是告诉管理员我以某种方式损坏了它。这没什么大不了的,但不知道它是怎么发生的真的让我很困扰。 我意识到有一个 FTP 命令可以在文件不唯一时重命名文件,但这不是问题。

我的问题是:这是怎么发生的,因为我无法重现它,我怎样才能避免再次这样做?

来自 Util 的代码:

public static String putDateStamp(){
    String currentdate = "";
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    currentdate = sdf.format(cal.getTime());
    return currentdate;
}

编辑:

服务器操作系统:UNIX 类型:L8

【问题讨论】:

  • 我的猜测是,区别对您来说并不明显,但有一个。可能是文件名中的尾随空格,或者不是立即明显的大小写更改。
  • 但是相同的代码被用于创建所有 3 个文件...
  • 没有操作系统允许您在同一目录中创建多个同名文件。有区别,但我们根本无法从视觉上看出区别是什么。服务器运行什么样的操作系统?你是怎么得到清单的?此外,如果您通过 FTP 在一个命令中重命名它(从“2012-11-09.log”到“abc”),它是重命名所有这些,还是只重命名其中一个?
  • 如果您尝试重命名文件并得到“没有这样的文件或目录”,那是因为您没有提供正确的名称。你给你看到的名字,这不是它的名字。文件名中有一个字符无法通过您打印名称的任何方式打印。可能是时候向我们展示 Util.putDateStamp() 的来源,看看它是否有任何方法生成包含奇怪字符的字符串
  • 当我尝试重命名它们时,我得到一个“没有这样的文件或目录”。列表是使用“LIST”命令创建的。我知道这就是操作系统应该如何工作的。如果我可以访问它,我会检查节点 ID,它们(希望)会有所不同。稍等,我将使用服务器详细信息编辑我的原始帖子...

标签: java ftp filesystems


【解决方案1】:

已解决 - 基本上 Filezilla 不允许在文件名中转义空格,也不会显示空格。所以自定义命令DEL " filename.log"会抛出file-not-found错误。

文件名前有不同数量的空格,可能是使用 JDatePicker 后在表单中输入的。

文件正在使用不同的 FTP 客户端删除。

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-05
    • 2020-10-16
    • 2023-03-14
    • 1970-01-01
    • 2011-02-26
    • 2011-01-18
    相关资源
    最近更新 更多