有什么办法可以找出java中磁盘的文件系统格式?
例如,对于Windows硬盘驱动器,它可以是NTFS;对于zip驱动器,它可以是FAT32。
注意:这仅对在Windows系统上运行的Java有效:
使用JNA,您可以调用Win32 Kernel32的 GetVolumeInformation() 来检索
lpFileSystemNameBuffer 参数,该参数receives the name of the file system, for example, the FAT file system or the NTFS file system
http://msdn.microsoft.com/zh-
cn/library/windows/desktop/aa364993(v=vs.85).aspx
Kernel32.java :
package filesystem;
import java.util.HashMap;
import java.util.Map;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.platform.win32.WinDef.DWORD;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.W32APIFunctionMapper;
import com.sun.jna.win32.W32APITypeMapper;
public interface Kernel32 extends StdCallLibrary {
final static Map<String, Object> WIN32API_OPTIONS = new HashMap<String, Object>() {
private static final long serialVersionUID = 1L;
{
put(Library.OPTION_FUNCTION_MAPPER, W32APIFunctionMapper.UNICODE);
put(Library.OPTION_TYPE_MAPPER, W32APITypeMapper.UNICODE);
}
};
public Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("Kernel32", Kernel32.class, WIN32API_OPTIONS);
/*
BOOL WINAPI GetVolumeInformation(
__in_opt LPCTSTR lpRootPathName,
__out LPTSTR lpVolumeNameBuffer,
__in DWORD nVolumeNameSize,
__out_opt LPDWORD lpVolumeSerialNumber,
__out_opt LPDWORD lpMaximumComponentLength,
__out_opt LPDWORD lpFileSystemFlags,
__out LPTSTR lpFileSystemNameBuffer,
__in DWORD nFileSystemNameSize
);
*/
public boolean GetVolumeInformation(
String lpRootPathName,
char[] lpVolumeNameBuffer,
DWORD nVolumeNameSize,
IntByReference lpVolumeSerialNumber,
IntByReference lpMaximumComponentLength,
IntByReference lpFileSystemFlags,
char[] lpFileSystemNameBuffer,
DWORD nFileSystemNameSize
);
public int GetLastError();
}
VolumeInformation.java :
package filesystem;
import ping.Kernel32;
import com.sun.jna.platform.win32.WinDef.DWORD;
import com.sun.jna.ptr.IntByReference;
public class VolumeInformation {
static void getFileSystemName(){
char[] lpVolumeNameBuffer = new char[256];
DWORD nVolumeNameSize = new DWORD(256);
IntByReference lpVolumeSerialNumber = new IntByReference();
IntByReference lpMaximumComponentLength = new IntByReference();
IntByReference lpFileSystemFlags = new IntByReference();
char[] lpFileSystemNameBuffer = new char[256];
DWORD nFileSystemNameSize = new DWORD(256);
lpVolumeSerialNumber.setValue(0);
lpMaximumComponentLength.setValue(256);
lpFileSystemFlags.setValue(0);
Kernel32.INSTANCE.GetVolumeInformation(
"C:\\",
lpVolumeNameBuffer,
nVolumeNameSize,
lpVolumeSerialNumber,
lpMaximumComponentLength,
lpFileSystemFlags,
lpFileSystemNameBuffer,
nFileSystemNameSize);
System.out.println("Last error: "+Kernel32.INSTANCE.GetLastError()+"\n\n");
String fs = new String(lpFileSystemNameBuffer);
System.out.println(fs.trim());
}
/**
* @param args
*/
public static void main(String[] args) {
getFileSystemName();
}
}
磁盘调度 磁盘访问延迟 = 队列时间 + 控制器时间 + 寻道时间 + 旋转时间 + 传输时间 磁盘调度的目的是减小延迟,其中前两项可以忽略,寻道时间是主要矛盾。 磁盘调度算法 FCFS:先进先出的调度策略,这个策略具有公平的优点,因为每个请求都会得到处理,并且是按照接收到的顺序进行处理。 SSTF(Shortest-seek-time First 最短寻道时间优先):选择使磁头从当前位置开始移动
主要内容:得到NTFS文件系统模块后,手工安装,利用 NTFS-3G 插件安装 NTFS 文件系统模块在 CentOS 6.x 中,默认 NTFS 文件系统是没有安装的,也就是说在 CentOS 6.x 中是不能直接挂载 NTFS 分区的。但是目前 Windows 的分区绝大多数是 NTFS 分区,这就需要在 CentOS 6.x 中安装 NTFS 文件系统的模块之后,才能使用 NTFS 分区。 安装 NTFS 文件系统模块的方法有三种: 第一种方法是完整地重新编译内核,然后在内核中选择 NTF
磁盘调度 磁盘访问延迟 = 队列时间 + 控制器时间 + 寻道时间 + 旋转时间 + 传输时间 磁盘调度的目的是减小延迟,其中前两项可以忽略,寻道时间是主要矛盾。 磁盘调度算法 FCFS 先进先出的调度策略,这个策略具有公平的优点,因为每个请求都会得到处理,并且是按照接收到的顺序进行处理。 SSTF(Shortest-seek-time First 最短寻道时间优先) 选择使磁头从当前位置开始移动
问题内容: 一个非常基本的问题。通过提供文件的完全限定路径,尝试打开文件描述符时执行的步骤的确切顺序是什么? 我在寻找 在Linux上如何运作 给定文件名-如何将其转换为inode和磁盘扇区 linux文件系统(特别是ext3和ext4)是否维护某种文件名到inode的映射? 问题答案: 文件确实是inode。 通常,给定文件在某个目录中有一些条目指向其索引节点。目录将名称映射到索引节点,目录是一
最近更新日期:20// 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分区不可太大也不能太小, 太大会造成磁盘容量的浪费,太小则会产生文件无法储存的困扰。此外,我们在前面几章谈到的文件权限与属性中, 这些权限与属性分别记录在文件系统的哪个区块内?这就得要谈到 filesystem 中的 inode 与 block 了。同时,为了虚拟化与大容量磁盘, 现在的 CentOS 7 默认使用
本文向大家介绍linux系统下如何挂载NTFS移动硬盘,包括了linux系统下如何挂载NTFS移动硬盘的使用技巧和注意事项,需要的朋友参考一下 前言 数据迁移是我们经常会遇到的,有时候做大数据量迁移时,为了快速迁移大数据,有可能在Linux服务器上临时挂载NTFS格式的移动硬盘, 一般情况下,Linux是识别不了NTFS格式移动硬盘的(需要重编译Linux核心才能,加挂NTFS分区), 这时候为了