JNI 檔案遍歷
1.引入#include "dirent.h"
2.相關結構體
(1)DIR
struct DIR {
struct dirent ent;
struct _WDIR *wdirp;
};
typedef struct DIR DIR;
(2)dirent
struct dirent {
long d_ino; /* Always zero */
unsigned short d_reclen; /* Structure size */
size_t d_namlen; /* Length of name without \0 */
int d_type; /* File type */
char d_name[PATH_MAX]; /* File name */
};
typedef struct dirent dirent;
2.c++遍歷檔案
void showAllFiles(string dir_name) {
if (dir_name.empty()) {
LOGE("dir_name is null !");
return;
}
DIR *dir = opendir(dir_name.c_str());
if (NULL == dir) {
LOGE("Can not open dir,Check path or permission!");
return;
}
dirent *file;
while ((file = readdir(dir)) != NULL) { //類似BufferedReader.readLine(),不過這裡返回是dirnet*,不是string
if (file->d_type == DT_DIR) { //是目錄則遞迴
string filePath = dir_name + "/" + file->d_name;
showAllFiles(filePath);
} else { //是檔案則輸出檔名
LOGE("filePath:%s%s", dir_name.c_str(), file->d_name);
}
}
closedir(dir); //opendir(char* dir)後要closedir(DIR *dir )
}
3.java變數檔案,這裡篩選目錄下的所以txt檔案
fun showJavaAllFiels(path:String){
var file: File = File(path)
if(file.exists()){
for(fileitm in file.listFiles()){
if (fileitm.isFile){
if(fileitm.name.endsWith(".txt"))
Log.e("native",path+"/"+fileitm.name)
}else{
showJavaAllFiels(path+"/"+fileitm.name)
}
}
}else{
Log.e("native","file is not exit!")
}
}
4.讀取txt檔案
fun readTxtFile(path:String){
var file = File(path)
if(file.exists()){
try {
//InputStream 是位元組輸入流的所有類的超類,一般我們使用它的子類,如FileInputStream等.
//OutputStream是位元組輸出流的所有類的超類,一般我們使用它的子類,如FileOutputStream等.
var fileInPutString = FileInputStream(file)
//InputStreamReader 是位元組流通向字元流的橋樑,它將位元組流轉換為字元流.
//OutputStreamWriter是字元流通向位元組流的橋樑,它將字元流轉換為位元組流.
var inputStreamReader = InputStreamReader(fileInPutString)
//BufferedReader從字元輸入流中讀取文字,緩衝各個字元
//BufferedWriter將文字寫入字元輸出流,緩衝各個字元
var bufferReader = BufferedReader(inputStreamReader)
var txt:String =""
var i= 0
while (bufferReader.readLine()?.also { txt = it }!=null){
i++;
Log.e("txt",i.toString()+txt)
}
bufferReader.close()
inputStreamReader.close()
fileInPutString.close()
}catch (e:IOException){
}
}
}
5.also擴充套件函式是和let相同,函式體內使用it代表呼叫物件object,不同點是返回值是當前物件,let返回的是最後一行或指定的return表示式。?.also{}表示object不為null才會執行函式體。
相關文章
- 遍歷檔案Java中遍歷出指定目錄中的所有檔案Java
- UTL_FILE遍歷檔案
- PHP遍歷目錄和檔案PHP
- 遍歷目錄下的所有檔案
- oracle 10g 以上 遍歷檔案Oracle 10g
- 迭代及用遞迴遍歷File檔案遞迴
- C/C++遍歷資料夾和檔案C++
- Python字典的遍歷,包括key遍歷/value遍歷/item遍歷/Python
- matlab遍歷資料夾下的所有檔案Matlab
- VBA遍歷 Excel 合併到一個 Excel 檔案Excel
- PHP超低記憶體遍歷目錄檔案和讀取超大檔案PHP記憶體
- Linux迴圈遍歷所有檔案,刪除指定字尾名檔案Linux
- js的map遍歷和array遍歷JS
- ASP.NET Core 中的檔案提供程式 遍歷資料夾讀取檔案資訊ASP.NET
- 利用 python 遍歷多級資料夾處理不同檔案Python
- 比ls快8倍?百萬級檔案遍歷的奇技淫巧
- 二叉樹建立,前序遍歷,中序遍歷,後序遍歷 思路二叉樹
- 二叉樹的建立、前序遍歷、中序遍歷、後序遍歷二叉樹
- JNI初步(五)jni ndk 一個.so檔案依賴另一個.so檔案的寫法
- jQuery 遍歷jQuery
- 遍歷 FlowDocument
- Javascript樹(一):廣度遍歷和深度遍歷JavaScript
- jQuery遍歷函式,javascript中的each遍歷jQuery函式JavaScript
- Java遞迴遍歷資料夾及檔案過濾器使用(FileFilter)Java遞迴過濾器Filter
- Java zip解壓,並遍歷zip中的配置檔案 .cfg或.propertiesJava
- 遞迴遍歷磁碟下的某一資料夾中所有檔案,並copy檔案生成檔案和帶資料夾的檔案遞迴
- jQuery的遍歷結構設計之遍歷同胞jQuery
- jQuery的遍歷結構設計之遍歷祖先jQuery
- 圖的遍歷演算法-馬遍歷棋盤演算法
- c# 上傳壓縮包 解壓,遍歷資料夾和檔案C#
- 陣列遍歷陣列
- 資料遍歷
- jQuery 遍歷方法jQuery
- jQuery 遍歷 – 祖先jQuery
- Java遍歷PropertiesJava
- 二叉樹的廣度遍歷和深度遍歷()二叉樹
- Android - JNI加入標準C++檔案AndroidC++
- java 壓縮包 遍歷解壓 zip 和 7z 指定格式檔案Java