java如何判断Linux系统文件是不是被占用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何判断Linux系统文件是不是被占用相关的知识,希望对你有一定的参考价值。

情况是这样:我在Linux系统下通过FileZilla搭建了一个Ftp Server,其他用户通过ftp client上传文件到我指定的服务器目录,如果检测有文件,就读取文件。在windows下我通过判断文件能否修改名字来判断文件是否上传完成,那么在Linux下如何判断文件是否上传完成呢?加后缀的方式是不可行的,因为我的程序只在服务端运行,只是监控这个目录。求各位帮忙!

我没明白你的意思,你的意思是你有两端,server和client,client端是window,你用是否可以修改名字来判断是否上传完成,server端是linux,你不知道如何判断这个文件是否上传完成,所以你想问问解决办法是把?
如果是这样的话:
在上传文件完后,再上传一个MD5文件(完整文件名+文件MD5值)。

检查此MD5文件是否存在,并且MD5值是否正确,即可判断,之后删除MD5

文件,当然了方法很多,比如获取FTP中上传文件的大小,之后对比下就好了
参考技术A 你好,提供两个思路吧。一、定时的去查看这个文件的大小,当这个文件大小不再发生变化时,你可以认为上传完成。二、如果可以获得到客户端的连接更好,当这个连接断开时,认为文件上传完毕。 参考技术B 你好,提供两个思路吧。一、定时的去查看这个文件的大小,当这个文件大小不再发生变化时,你可以认为上传完成。二、如果可以获得到客户端的连接更好,当这个连接断开时,认为文件上传完毕。

如何判断 Linux 机器上的目录是不是在 Java 中安装了外部文件系统?

【中文标题】如何判断 Linux 机器上的目录是不是在 Java 中安装了外部文件系统?【英文标题】:How to tell if a directory on a Linux machine has an external file system mounted to it in Java?如何判断 Linux 机器上的目录是否在 Java 中安装了外部文件系统? 【发布时间】:2018-05-04 09:34:29 【问题描述】:

我有三个独立的 Linux 服务器,它们在名为 /efs 的目录下挂载并共享同一个文件系统

我有一个使用此文件系统的 Java 应用程序,并且需要能够验证文件系统是否已正确挂载(否则,它会简单地写入本地机器上的 /efs 而不是共享存储知道) - 我如何在运行时从我的应用程序中检测到文件系统已安装到目录?

对不起,如果这是一个重复的问题。我确实确实试图找到这方面的信息,但我找不到明确的答案。

【问题讨论】:

您需要调用可以告诉您的 Linux 程序。这使它成为一个 Linux/Unix 问题。 【参考方案1】:

我看到了一些解决这个问题的方法:

    如果挂载在 /efs 的文件系统与根文件系统不同,您可以使用Files.getFileStore(path).type() 进行比较。 / 相同的文件系统将清楚地表明 /efs 挂载丢失。这假设 JDK >= 7。 读取并解析/proc/mounts 以查看挂载了哪些文件系统以及使用哪些选项。这与 Java 的 FileStore API 在后台使用的数据源相同,因此您可以直接从 JDK 源中获取解析逻辑。这将独立于 Java 版本。 在已挂载的文件系统上有一个文件,它永远不会在根文件系统上,然后可以通过Files.exists(path)new File(path).exists() 简单地检查它。这将独立于 Java 版本,甚至独立于 Linux。

【讨论】:

【参考方案2】:

回答我自己的问题 - 我刚刚想到在已挂载的文件系统中创建一个文件并简单地检查文件是否存在,避免任何依赖于操作系统的代码。

【讨论】:

以上是关于java如何判断Linux系统文件是不是被占用的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么通过写一段代码来判断端口号是不是被占用。在Linux下。

Linux查看端口是不是被占用的命令是啥?

Linux下如何查看80端口是不是被占用

如何在 Linux/Unix 系统中验证端口是不是打开

java删除被占用的文件

如何使用java判断操作系统