package com.su.testjni;
import android.app.Activity;
import android.widget.TextView;
import android.os.Bundle;
public class CreateFileActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
long start = System.currentTimeMillis();
createFile(100*1024*1024);//创建的大小
long timecost = System.currentTimeMillis() - start;
TextView tv = new TextView(this);
tv.setText(timecost + "");
setContentView(tv);
}
public native void createFile(long filesize);
public native String unimplementedStringFromJNI();
static {
System.loadLibrary("createfile");
}
}
mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := createfile
LOCAL_SRC_FILES := createfile.c
LOCAL_LDLIBS := -lm -llog
include $(BUILD_SHARED_LIBRARY)
c文件
#include <string.h>
#include <jni.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <time.h>
#include <android/log.h>
#define LOG_TAG "System.out.c"
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)
void createFile(long filesize) {
clock_t start = clock();
FILE *pfile = fopen("/sdcard/test", "w");
LOGD("cost time: %d", clock()-start);
truncate("/sdcard/test", filesize);
LOGD("cost time1: %d", clock()-start);
fclose(pfile);
LOGD("cost time2: %d", clock()-start);
}
void Java_com_su_testjni_CreateFileActivity_createFile(JNIEnv* env,
jlong filesize) {
createFile(filesize);
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.su.testjni"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="com.su.testjni.CreateFileActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>