各位大哥,小弟在这求助了!帮我看看我的代码哪里需要补充的,谢谢了!!
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;
}按找步骤运行可是不出结果...请问哪里还需要补充的吗?敬请大侠们指点!
解决方案 »
- SocketChannel发送字节数上限ServerSocketChannel接收字节数上限(急急急急)
- 请帮忙看一下这个程序,是怎样调用compareTo()方法的
- JCeator 没有设置断点的地方?? 有谁用过这东东....(马上结贴)
- java 传输多个文件的问题??
- 设置系统背景
- hello world 的异常
- 关于堆和栈的本质区别?
- 问一个关于类加载和声明的问题
- 我下载了 Java Communication API(javax.comm) ,其中有个dll不知道怎么让虚拟机载入,请高手指点(分不够再加)
- 请问Vector和ArrayList里存放的数据大小有没有限制?
- StringBuffer的疑问
- JAVA中参数互换。
File.listRoots()能列出根目录……
File貌似也有getTotalSpace()和getFreeSpace()方法……PS:如果你非要JNI实现的话……那……那我不会……你接着等吧……
我看你好像就想获得总容量和剩余容量……如果是想得到某个分区的容量不需要jni就可以得到(看我上面说的那些方法)……如果是整个块磁盘的容量……请你忽略这一楼……
还有一点需要说明的是,这个程序的要求就是要用JNI方法,不是我要用,是要求用...