java调用windowsAPI初识-简单的文件删除功能

写一篇博文记录一下最近自学的东西。
主要使用工具:IDEA、maven
主要参考代码:java使用JNA框架调用dll动态库:https://www.cnblogs.com/new-life/p/9345840.html

开始

1.新建一个springboot项目,如果你会其他的也可以。
不会新建的朋友可以参考:https://www.cnblogs.com/zslli/p/8693070.html
2.新建完成后,由于我用的是maven项目,所以不是去找jar包而是去maven官网找配置(建议谷歌浏览器,右击网页弹出的菜单里有个 翻成中文(简体) 的功能,对英语不是很好的朋友很有帮助)
在这里插入图片描述
在这里插入图片描述
下图:点击的是3.0.9那个红框,反正选最新的版本就行,上面那个红框是网页自带的,别弄错了。
在这里插入图片描述
在这里插入图片描述

<!-- https://mvnrepository.com/artifact/com.sun.jna/jna -->
<dependency>
    <groupId>com.sun.jna</groupId>
    <artifactId>jna</artifactId>
    <version>3.0.9</version>
</dependency>

把这段配置copy到pom.xml中,右下角会弹出提示,点击import maven即可
在这里插入图片描述
3、既然我们要调用windows的API删除文件,那么我们首先要知道是哪个API
先百度:
在这里插入图片描述
英语不好的可以用谷歌浏览器的翻译功能--上面说了
在这里插入图片描述

点击上面的 Full Windows API Index 页面后,跳转的新页面,先翻译成中文(英文高手可无视),然后一直往下面拖动,直到
下面的选项,因为我们是要删除文件,肯定和文件功能有关 在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
方法名称也是中文的原因是谷歌的翻译,不管,点进去。

在这里插入图片描述
OK,终于找到了。
题外话:以前用的DeleteFile,现在用的DeleteFileA,只要知道后面带A的是最新的函数,直接用就行,不用管其他。

然后还是上图的页面,拖到最下面,
在这里插入图片描述
这个就是调用删除文件API对应的DLL文件。

4、开始写代码
首先新建一个接口
在这里插入图片描述

package com.zcit.dlltest;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;

/**
 * DLL动态库调用接口
 *
 */
public interface CLibrary extends Library {
    CLibrary INSTANCE = (CLibrary) Native.loadLibrary((Platform.isWindows() ? "KERNEL32" : "c"),CLibrary.class);
    //声明要调用的DLL中的方法
    int DeleteFileA(String fileName);
}

相信大家可以看懂KERNEL32就是上面我们找到的DLL文件的名称,而声明的方法就是我们找到的DeleteFileA的句法的函数名,根据返回值的描述返回的是0或者非零值–我们设定返回值为int(一般成功的话返回的是删除的文件数量的整数),参数是文件名称,这些第三步里面我们找到的API里面都有说明。

再新建一个类,
在这里插入图片描述

package com.zcit.dlltest;

public class JNADllCall{

    public static void main(String[] args) {
        int temp = CLibrary.INSTANCE.DeleteFileA("C:\\Users\\Administrator\\Desktop\\123.txt");
        System.out.println(temp);
    }

}

我在桌面新建了一个文本文档并命名为123,然后把路径写上来。

直接运行该类,会发现文件成功被彻底删除了,回收站都找不到。
在这里插入图片描述
大功告成。

【拓展】

我们在DeleteFileA的页面还可以看到 GetLastError 这个方法
在这里插入图片描述
那么,有兴趣的同学可以试试函数返回失败时(例如文件不存在的情况),调用该方法来查看返回的错误信息,并且可以找找返回的错误信息代码对应的描述。

PS:本人第一次写博客,难免有很多不足和错漏知足,希望大家多多担待。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值