ntfsutil.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 147 行

JAVA
147
字号
/*
 * $Id: NTFSUTIL.java,v 1.6 2004/01/19 21:20:54 vchira_2000 Exp $
 */
package org.jnode.fs.ntfs;

import java.util.Date;

/**
 * @author vali
 *
 * To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Generation - Code and Comments
 */
public class NTFSUTIL {

	public static int LE_READ_U16_INT(byte up, byte low)
	{
		int word = low;
		word = (word << 8) | (up & 0xff);
		return word & 0xFFFFFFFF;
	}
	
	public static int LE_READ_16_INT(byte up, byte low)
	{
		int word = low;
		word = (word << 8) | (up & 0xff);
		return word;
	}
	
	public static char READ16_CHAR(byte up, byte low)
	{
		char word = (char) low;
		word = (char) ((word << 8) | (up & 0xff));
		return word;
	}
	
	public static long LE_READ_U64_LONG (byte[] abArray, int offset)
	{
		int b1 = abArray[offset + 7] & 0xFF;
		int b2 = abArray[offset + 6] & 0xFF;
		int b3 = abArray[offset + 5] & 0xFF;
		int b4 = abArray[offset + 4] & 0xFF;
		int b5 = abArray[offset + 3] & 0xFF;
		int b6 = abArray[offset + 2] & 0xFF;
		int b7 = abArray[offset + 1] & 0xFF;
		int b8 = abArray[offset + 0] & 0xFF;
		
		return 
				(b1 << 56) | 
				(b2 << 48) | 
				(b3 << 40) | 
				(b4 << 32) | 
				(b5 << 24) | 
				(b6 << 16) | 
				(b7 << 8) | 
				b8;
	}

	public static byte[] extractSubBuffer(byte[] buffer , int offset,int length)
	{
		byte[] temp = new byte[length];
		System.arraycopy(buffer,offset,temp,0,length);
		return temp;
	}

	public static int LE_READ_U32_INT (byte[] abArray, int offset)
	{
		int b1 = abArray[offset + 3] & 0x000000FF;
		int b2 = abArray[offset + 2] & 0x000000FF;
		int b3 = abArray[offset + 1] & 0x000000FF;
		int b4 = abArray[offset + 0] & 0x000000FF;
		
		return (
				(b1 << 24) | 
				(b2 << 16) | 
				(b3 << 8) | 
				b4) & 0xFFFFFFFF;
	}
	public static int LE_READ_U48_INT (byte[] abArray, int offset)
	{
		int b1 = abArray[offset + 5] & 0x000000FF;
		int b2 = abArray[offset + 4] & 0x000000FF;
		int b3 = abArray[offset + 3] & 0x000000FF;
		int b4 = abArray[offset + 2] & 0x000000FF;
		int b5 = abArray[offset + 1] & 0x000000FF;
		int b6 = abArray[offset + 0] & 0x000000FF;
		
		return (
				(b1 << 40) | 
				(b2 << 32) | 
				(b3 << 24) | 
				(b4 << 16) | 
				(b5 << 8) | 
				b6) & 0xFFFFFFFF;
	}
	public static int LE_READ_32_INT (byte[] abArray, int offset)
	{
		int b1 = abArray[offset + 3];
		int b2 = abArray[offset + 2];
		int b3 = abArray[offset + 1];
		int b4 = abArray[offset + 0];
		
		return 
				(b1 << 24) | 
				(b2 << 16) | 
				(b3 << 8) | 
				 b4;
	}
	public static int LE_READ_24_INT (byte[] abArray, int offset)
	{
		int b1 = abArray[offset + 2] & 0x000000FF;
		int b2 = abArray[offset + 1] & 0x000000FF;
		int b3 = abArray[offset + 0] & 0x000000FF;
		
		return (
				(b1 << 16) | 
				(b2 << 8) | 
				b3);
	}
	
	public static int LE_READ_U24_INT (byte[] abArray, int offset)
	{
		int b1 = abArray[offset + 2] & 0x000000FF;
		int b2 = abArray[offset + 1] & 0x000000FF;
		int b3 = abArray[offset + 0] & 0x000000FF;
		
		return (
				(b1 << 16) | 
				(b2 << 8) | 
				 b3) & 0xFFFFFFFF;
	}
	public static Date getDateForNTFSTimes(long _100ns)
	{
		long timeoffset = Math.abs((369*365 + 89) * 24 * 3600 * 10000000);
		long time = (Math.abs(_100ns) - timeoffset);
		
		System.out.println("hours" + ((Math.abs(time) / 1000)  / 60)/60);
		Date date = new Date(time);
		System.out.println(date.toLocaleString());
		return date;
	}
	public static void printOutHexLong(String name,long value)
	{
		System.out.println(name + " = 0x"  + Long.toHexString(value));
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?