各位大哥,小弟在这求助了!帮我看看我的代码哪里需要补充的,谢谢了!!
disk.java代码如下:
public class disk
{
String str;
public native long diskFree();
public native long diskTotal();
static
{
System.loadLibrary("disk");
}
}disk.cpp代码如下:
#include "disk.h"
#include <string.h>
#include <stdlib.h>
#include <windows.h>JNIEXPORT jlong JNICALL Java_disk_diskFree
(JNIEnv *env, jobject obj)
{
jclass cls;
jfieldID fid;
jstring jstr;
const char *str; cls=env->GetObjectClass(obj);
fid=env->GetFieldID(cls,"str","Ljava/lang/String;");
jstr=(jstring)env->GetObjectField(obj,fid);
str=env->GetStringUTFChars(jstr,NULL);
ULARGE_INTEGER FreeAv,TotalBytes,FreeBytes; if(GetDiskFreeSpaceEx(str,&FreeAv,&TotalBytes,&FreeBytes));
env->ReleaseStringUTFChars(jstr,str);
return (jlong)FreeBytes.QuadPart;
}
JNIEXPORT jlong JNICALL Java_disk_diskTotal
(JNIEnv *env, jobject obj)
{
jclass cls;
jfieldID fid;
jstring jstr;
const char *str; cls=env->GetObjectClass(obj);
fid=env->GetFieldID(cls,"str","Ljava/lang/String;");
jstr=(jstring)env->GetObjectField(obj,fid);
str=env->GetStringUTFChars(jstr,NULL);
ULARGE_INTEGER FreeAv,TotalBytes,FreeBytes;
if(GetDiskFreeSpaceEx(str,&FreeAv,&TotalBytes,&FreeBytes));
env->ReleaseStringUTFChars(jstr,str);
return (jlong)TotalBytes.QuadPart;
}按找步骤运行可是不出结果...请问哪里还需要补充的吗?敬请大侠们指点!
disk.java代码如下:
public class disk
{
String str;
public native long diskFree();
public native long diskTotal();
static
{
System.loadLibrary("disk");
}
}disk.cpp代码如下:
#include "disk.h"
#include <string.h>
#include <stdlib.h>
#include <windows.h>JNIEXPORT jlong JNICALL Java_disk_diskFree
(JNIEnv *env, jobject obj)
{
jclass cls;
jfieldID fid;
jstring jstr;
const char *str; cls=env->GetObjectClass(obj);
fid=env->GetFieldID(cls,"str","Ljava/lang/String;");
jstr=(jstring)env->GetObjectField(obj,fid);
str=env->GetStringUTFChars(jstr,NULL);
ULARGE_INTEGER FreeAv,TotalBytes,FreeBytes; if(GetDiskFreeSpaceEx(str,&FreeAv,&TotalBytes,&FreeBytes));
env->ReleaseStringUTFChars(jstr,str);
return (jlong)FreeBytes.QuadPart;
}
JNIEXPORT jlong JNICALL Java_disk_diskTotal
(JNIEnv *env, jobject obj)
{
jclass cls;
jfieldID fid;
jstring jstr;
const char *str; cls=env->GetObjectClass(obj);
fid=env->GetFieldID(cls,"str","Ljava/lang/String;");
jstr=(jstring)env->GetObjectField(obj,fid);
str=env->GetStringUTFChars(jstr,NULL);
ULARGE_INTEGER FreeAv,TotalBytes,FreeBytes;
if(GetDiskFreeSpaceEx(str,&FreeAv,&TotalBytes,&FreeBytes));
env->ReleaseStringUTFChars(jstr,str);
return (jlong)TotalBytes.QuadPart;
}按找步骤运行可是不出结果...请问哪里还需要补充的吗?敬请大侠们指点!
解决方案 »
- 关于java钩子的问题
- 有谁解释这个net.btdz.oa.common.*包,给100分
- 救助!!!!!!!!!!!!
- javascript vbscript 小问题
- 菜鸟紧急求助!!
- 关于在页面上实现聊天功能
- 请教如何在JTextField中限制输入中文字符的长度.原来限制字母和数字的方法有bug
- 我用ant编译src目录下所有的java文件,(大约有1500个),运行后报java.lang.OutOfMemoryError,这是为什么?
- 在java中开发,xml主要起什么作用?
- 本人熟悉VB,掌握DELPHI,现想学JB请问我该怎么下手呢,我到那里去下载有关书籍呀?
- StringBuffer的疑问
- JAVA中参数互换。
File.listRoots()能列出根目录……
File貌似也有getTotalSpace()和getFreeSpace()方法……PS:如果你非要JNI实现的话……那……那我不会……你接着等吧……
我看你好像就想获得总容量和剩余容量……如果是想得到某个分区的容量不需要jni就可以得到(看我上面说的那些方法)……如果是整个块磁盘的容量……请你忽略这一楼……
还有一点需要说明的是,这个程序的要求就是要用JNI方法,不是我要用,是要求用...