用java发出硬盘命令

Posted

技术标签:

【中文标题】用java发出硬盘命令【英文标题】:issuing hard drive commands with java 【发布时间】:2010-09-28 06:36:09 【问题描述】:

有没有人知道在 Java 中向硬盘驱动器发出命令的方法? Java 甚至支持这种硬件交互吗?

例如,如果我想查询一个 SCSI 硬盘驱动器,是否有预先存在的 Java 方法来执行此操作,或者我必须自己编写?

http://en.wikipedia.org/wiki/SCSI 提供了一些关于 SCSI 命令的一般信息,以防您不熟悉。

【问题讨论】:

【参考方案1】:

Java 不支持像这样直接与硬件对话。但是,您可以使用 JNI 从 Java 中调用 C/C++ 函数。

【讨论】:

我可以使用其他语言和 JNI 来访问硬盘驱动器,还是仅限于 C/C++?或者,是否可以完全用 C/C++ 编写由 Java 程序调用/运行的程序? 是的,是的。我听说你可以直接使用 asaembly,是的,你可以从 Java 中运行一个完整的程序。【参考方案2】:

不,因为 Java 在“虚拟”机器上运行,而不是在真实机器上运行。但是它可以像前面提到的使用 JNI 的 dj 一样用作桥梁。

根据WikipediaJNI也可以直接调用汇编。 JNI 可用于调用用 C 或 C++ 编写的完整程序

【讨论】:

如果C/C++代码是一个完整的程序,那么没有理由使用JNI;你可以只执行程序。 JNI 实现起来并不简单,所以除非需要,否则我不会使用它。 JNI 用于调用其他语言的函数。我在宝丽来用它与信用卡读卡器交谈。【参考方案3】:

三个词“JNI 或 JNA”。我强烈建议您看看后者,看看它是否适合您的情况,而不是仅仅选择 JNI。

【讨论】:

【参考方案4】:

您需要用 C/C++ 编写 HDD 接口代码,然后使用 JNI 从 Java 调用它

【讨论】:

以上是关于用java发出硬盘命令的主要内容,如果未能解决你的问题,请参考以下文章

用Diskpart命令快速将硬盘转换为GPT分区

Win7系统怎么用diskpart命令给硬盘分区

linux中查看硬盘分区信息的命令是啥?

linux添加新硬盘怎么做 要如何分区

电脑硬盘分区命令

硬盘坏道修复的cmd命令