我试图找到一种方法来检测何时将闪存驱动器插入计算机。到目前为止,我发现的解决方案是轮询FileSystem#getFileStores
更改。这确实告诉我何时插入了闪存驱动器,但是据我所知,没有办法为其找到位置。FileStore#type
而FileStore#name
双方似乎非常不可靠作为其返回值是实现特定的,但他们似乎是可能返回的任何相关信息,可能有助于找到该目录的唯一方法FileStore
。
考虑到这一点,以下代码:
public class Test {
public static void main(String[] args) throws IOException {
for (FileStore store : FileSystems.getDefault().getFileStores()) {
System.out.println(store);
System.out.println("\t" + store.name());
System.out.println("\t" + store.type());
System.out.println();
}
}
}
给我这个输出:
/ (/dev/sda5)
/dev/sda5
ext4
/* snip */
/media/TI103426W0D (/dev/sda2)
/dev/sda2
fuseblk
/media/flashdrive (/dev/sdb1)
/dev/sdb1
vfat
事实证明,FileStore#type
返回驱动器的格式并FileStore#name
返回该驱动器的设备文件的位置。据我所知,唯一具有驱动器位置的toString
方法就是该方法,但是从中提取路径名似乎很危险,因为我不确定该特定解决方案在其他操作系统上的性能如何。
Java的未来版本。
我在这里缺少什么吗?或者仅仅使用Java不可能做到这一点吗?
系统信息:
$ java -version
java version "1.7.0_03"
OpenJDK Runtime Environment (IcedTea7 2.1.1pre) (7~u3-2.1.1~pre1-1ubuntu2)
OpenJDK Client VM (build 22.0-b10, mixed mode, sharing)
$ uname -a
Linux jeffrey-pc 3.2.0-24-generic-pae #37-Ubuntu SMP Wed Apr 25 10:47:59 UTC 2012 i686 athlon i386 GNU/Linux
在找到更好的解决方案之前,请先做以下临时工作:
public Path getRootPath(FileStore fs) throws IOException {
Path media = Paths.get("/media");
if (media.isAbsolute() && Files.exists(media)) { // Linux
try (DirectoryStream<Path> stream = Files.newDirectoryStream(media)) {
for (Path p : stream) {
if (Files.getFileStore(p).equals(fs)) {
return p;
}
}
}
} else { // Windows
IOException ex = null;
for (Path p : FileSystems.getDefault().getRootDirectories()) {
try {
if (Files.getFileStore(p).equals(fs)) {
return p;
}
} catch (IOException e) {
ex = e;
}
}
if (ex != null) {
throw ex;
}
}
return null;
}
据我所知,该解决方案仅适用于Windows和Linux系统。
您必须抓住IOException
Windows循环,因为如果CD驱动器中没有CD,则在尝试为其检索CD时会引发异常FileStore
。在遍历每个根之前可能会发生这种情况。
#include <stdio.h> #include <time.h> int main(void) { time_t now = time(NULL); struct tm local = {0}; struct tm gmt = {0}; localtime_r(&now, &local); gmtime_r
问题内容: 已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 我试图找到一个目录中存在的文件,而不是另一个目录中的文件,我尝试使用以下命令: 与上面的命令,它会找到这两个文件的问题,但不是还有文件而不是在, 我试图在文件中找到文件,但不仅在其中。 这是我的数据的一小部分样本 在我脑海里的另一个问题是,我怎么能找到的文件,而不是在或在一个单一的命令?
实际工作中文件多了,可能就会忘掉它的位置,这个时候就可以使用 find 命令快速查找出文件所在目录的地址,提升了文件查找的效率。 1. 按照文件类型查找 使用 -type 参数可以查找不同类型的文件,其可以查找的文件类型如下: find -type 文件类型介绍 描述 f 普通文件 d 目录文件 l 符号链接文件 b 块设备文件 c 字符设备文件 p 管道文件 s 套接字文件 这里以查找 /hom
问题内容: 在Python中,我可以使用哪些命令来查找: 1.当前目录(运行Python脚本时我在终端中的位置) 2.我正在执行的文件在哪里? 问题答案: 要获取包含Python文件的目录的完整路径,请在该文件中写入以下内容: (请注意,如果你已经习惯于更改当前的工作目录,则上述方法将不起作用,因为常量的值是相对于当前的工作目录而言的,并且不会被调用更改。) 要获取当前的工作目录,请使用 上面使用
简介 Laravel 提供了一个强大的文件系统抽象,这得益于 Frank de Jonge 强大的 Flysystem 扩展包。Laravel 文件系统集成为使用本地文件系统、Amazon S3 和 Rackspace 云存储提供了简单易用的驱动程序。更棒的是,由于每个系统的 API 保持不变,所以在这些存储选项之间切换是非常简单的。 配置 文件系统的配置文件位于 config/filesyste
厂商标识 标识 厂商 local 本地系统 aliyun-oss 阿里云 OSS 频道标识 标识 描述 public 用于公开图片,例如用户头像,或者不需要付费的任何图片使用 public 作为频道 创建上传任务 /api/v2/storage 请求内容参数: 参数 类型 描述 filename string 必须,文件原始名称(需要带上文件拓展名) hash string 必须,文件的 MD5