1.周遊指定目錄的所有txt檔案
/**
* 擷取指定目錄内所有檔案路徑
* @param dirPath 需要查詢的檔案目錄
* @param _type 查詢類型,比如TXT什麼的
*/
public JSONArray getAllFiles(String dirPath[], String _type) {
JSONArray fileList = new JSONArray();
for(int i= 0 ;i<dirPath.length;i++){
File f = new File(String.valueOf(getExternalFilesDir(dirPath[i])));
if (!f.exists()) {//判斷路徑是否存在
return null;
}
File[] files = f.listFiles();
if(files==null){//判斷權限
return null;
}
for (File _file : files) {//周遊目錄
if(_file.isFile() && _file.getName().endsWith(_type)){
String _name=_file.getName();
String filePath = _file.getAbsolutePath();//擷取檔案路徑
// String fileName = _file.getName().substring(0,_name.length()-4);//擷取檔案名
String fileName = _file.getName();//擷取檔案名
// Log.e("LOGCAT","fileName:"+fileName);
// Log.e("LOGCAT","filePath:"+filePath);
try {
JSONObject _fInfo = new JSONObject();
_fInfo.put("name", fileName);
_fInfo.put("path", filePath);
fileList.put(_fInfo);
}catch (Exception e){
}
} else if(_file.isDirectory()){//查詢子目錄
// getAllFiles(_file.getAbsolutePath(), _type);
} else{
}
}
}
return fileList;
}
2.上傳的實作
/**
*
* @param context
* @param endpoint 找後端拿
* @param bucketName 找後端拿
* @param objectName 這個是要存在oss的檔案名
* @param uploadFilePath 這個是本地檔案的路徑
*/
public void UploadFile(Context context,String endpoint, String bucketName, String objectName, final String uploadFilePath) {
credentialProvider = new OSSAuthCredentialsProvider("https://xxx.cn");//這個找你們後端拿吧,是authServerUrl
conf = new ClientConfiguration();
conf.setConnectionTimeout(15 * 1000); // 連接配接逾時,預設15秒
conf.setSocketTimeout(15 * 1000); // socket逾時,預設15秒
conf.setMaxConcurrentRequest(5); // 最大并發請求數,預設5個
conf.setMaxErrorRetry(2); // 失敗後最大重試次數,預設2次
oss = new OSSClient(context, endpoint, credentialProvider, conf);
// 構造上傳請求。
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, uploadFilePath);
// 異步上傳時可以設定進度回調。
putObjectRequest.setProgressCallback(new OSSProgressCallback<PutObjectRequest>() {
@Override
public void onProgress(PutObjectRequest request, long currentSize, long totalSize) {
Log.e(TAG, "onProgress: "+currentSize*100/totalSize );
}
});
OSSAsyncTask ossAsyncTask = oss.asyncPutObject(putObjectRequest, new OSSCompletedCallback<PutObjectRequest, PutObjectResult>() {
@Override
public void onSuccess(PutObjectRequest request, PutObjectResult result) {
Log.e(TAG, "onSuccess: "+result );
}
@Override
public void onFailure(PutObjectRequest request, ClientException clientExcepion, ServiceException serviceException) {
// 請求異常。
if (clientExcepion != null) {
// 本地異常,如網絡異常等。
clientExcepion.printStackTrace();
Log.e("123",clientExcepion+"");
}
if (serviceException != null) {
// 服務異常。
Log.e("123",serviceException+"");
}
}
});
// ossAsyncTask.cancel(); // 可以取消任務
ossAsyncTask.waitUntilFinished(); // 等待任務完成
}
3.周遊所有指定的目錄下的所有txt檔案,并上傳(随便舉個例子)
private void upload(){
String file[] = {"PPG","ACC","GYRO","RRI"};//這裡是周遊含有"PPG","ACC","GYRO","RRI"的所有txt檔案
String userId = 109;
JSONArray arrayPPG =getAllFiles(file,".txt");
for (int i=0;i<arrayPPG.length();i++) {
try {
JSONObject jsonObject = (JSONObject) arrayPPG.get(i);
String path=jsonObject.getString("path");
String name =jsonObject.getString("name");
String pathName =jsonObject.getString("name").substring(0,3);//截取路徑的前3個字元
UploadFile(this,
"http://oss-xxx.com",//找你們後端拿
"xxx",//桶名,找你們後端拿
pathName+"/"+userId+"_"+name,
path);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
上傳成功之後的效果:

對了,别忘了添加oss的依賴哦,這裡我是把它打成aar了
就是拿oss上面的demo
fileTree(dir: 'libs', include: ['*.jar','*.aar'])