什么是java内核_从Java调用Windows内核函数最简单的方法是什么?

这篇博客介绍了如何使用Java Native Access (JNA) 库来调用Windows内核函数,特别是`MoveFileW`方法,用于文件重命名。通过示例代码展示了如何加载库、定义接口以及处理错误信息。
摘要由CSDN通过智能技术生成

如果您使用JNA,请考虑调用

MoveFileW

直接-它省去了在Unicode和ANSI调用之间进行选择时必须提供配置信息的麻烦。

import java.io.*;

import com.sun.jna.*;

public class Ren {

static interface Kernel32 extends Library {

public static Kernel32 INSTANCE = (Kernel32) Native

.loadLibrary("Kernel32", Kernel32.class);

public static int FORMAT_MESSAGE_FROM_SYSTEM = 4096;

public static int FORMAT_MESSAGE_IGNORE_INSERTS = 512;

public boolean MoveFileW(WString lpExistingFileName,

WString lpNewFileName);

public int GetLastError();

public int FormatMessageW(int dwFlags,

Pointer lpSource, int dwMessageId,

int dwLanguageId, char[] lpBuffer, int nSize,

Pointer Arguments);

}

public static String getLastError() {

int dwMessageId = Kernel32.INSTANCE.GetLastError();

char[] lpBuffer = new char[1024];

int lenW = Kernel32.INSTANCE.FormatMessageW(

Kernel32.FORMAT_MESSAGE_FROM_SYSTEM

| Kernel32.FORMAT_MESSAGE_IGNORE_INSERTS, null,

dwMessageId, 0, lpBuffer, lpBuffer.length, null);

return new String(lpBuffer, 0, lenW);

}

public static void main(String[] args) throws IOException {

String from = ".\\from.txt";

String to = ".\\to.txt";

new FileOutputStream(from).close();

if (!Kernel32.INSTANCE.MoveFileW(new WString(from),

new WString(to))) {

throw new IOException(getLastError());

}

}

}

编辑:我在检查代码后编辑了我的答案-我错认为在签名中使用char[]-最好使用

WString

.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值