付費(fèi)下載
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android怎么通過(guò)TCP協(xié)議上傳指定目錄文件
這篇文章主要介紹Android怎么通過(guò)TCP協(xié)議上傳指定目錄文件,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!Android是一種基于Linux內(nèi)核的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由美國(guó)Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。為了方便客戶抓取Log,現(xiàn)通過(guò)TCP協(xié)議連接指定服務(wù)器,傳輸指定內(nèi)容,定義指定目錄,IP,PORT字段接收參數(shù)。
public
static
void
uploadLog(final
String
dirPath,
final
String
IP,
final
int
port
)
{
JSONArray
fileList
=
new
JSONArray();
final
JSONArray
allFiles
=
getAllFiles(fileList,dirPath);
if(allFiles==null)return;
new
Thread(){
@Override
public
void
run()
{
super.run();
try
{
Socket
socket=new
Socket(IP,port);
if(!socket.isConnected())return;
//判斷是否建立連接
OutputStream
os
=
socket.getOutputStream();
int
index
=
dirPath.lastIndexOf("/")+1;
os.write(dirPath.substring(index).getBytes());//TAG
os.write("\r\n".getBytes());
for
(int
i=0;i<allFiles.length();i++){
try
{
JSONObject
o
=
(JSONObject)
allFiles.get(i);
String
path
=
o.getString("path");
String
name
=
o.getString("name");
FileInputStream
fis=new
FileInputStream(path);
if(fis!=null){
InputStreamReader
inputreader
=
new
InputStreamReader(fis);
BufferedReader
buffreader
=
new
BufferedReader(inputreader);
String
line;
while
((line=buffreader.readLine())!=null){
//按行讀取文件內(nèi)容
os.write(line.getBytes());
os.write("\r\n".getBytes());//向服務(wù)器端發(fā)送文件
}
buffreader.close();
inputreader.close();
}
fis.close();
}
catch
(JSONException
e)
{
e.printStackTrace();
}
}
//關(guān)閉客戶端輸出流,中斷上傳
socket.shutdownOutput();
socket.close();
}
catch
(IOException
e)
{
e.printStackTrace();
}
}
}.start();
}
/**
*
獲取指定目錄內(nèi)所有文件路徑
*
@param
dirPath
需要查詢的文件目錄
*/
public
static
JSONArray
getAllFiles(JSONArray
fileList,String
dirPath)
{
File
f
=
new
File(dirPath);
if
(!f.exists())
{//判斷路徑是否存在
return
null;
}
File[]
files
=
f.listFiles();
if(files==null){//判斷權(quán)限
return
null;
}
for
(File
_file
:
files)
{//遍歷目錄
if(_file.isFile()){
String
_name=_file.getName();
String
filePath
=
_file.getAbsolutePath();//獲取文件路徑
int
end=_file.getName().lastIndexOf('.');
String
fileName
=
_file.getName().substring(0,end);//獲取文件名
try
{
JSONObject
_fInfo
=
new
JSONObject();
_fInfo.put("name",
fileName);
_fInfo.put("path",
filePath);
fileList.put(_fInfo);
}catch
(Exception
e){
}
}
else
if(_file.isDirectory()){//查詢子目錄
getAllFiles(fileList,_file.getAbsolutePath());
}
else{
}
}
return
fileList;
}必須聲明一下權(quán)限:<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.INTERNET"></uses-permission><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.INTERNET"></uses-permission>設(shè)計(jì)思路:
1首先通過(guò)第三方應(yīng)用傳過(guò)來(lái)的Log路徑,通過(guò)遍歷該路徑,得到該目錄下的所有文件,保存到集合中,
2然后通過(guò)socker建立通信,通信建立成功后開(kāi)始傳輸日志,
3讀取指定目錄下的日志文件,解析內(nèi)容傳輸?shù)椒?wù)端,
4日志按行讀取,
5內(nèi)容頭部增加TAG以區(qū)分不同應(yīng)用的日志
1首先通過(guò)第三方應(yīng)用傳過(guò)來(lái)的Log路徑,通過(guò)遍歷該路徑,得到該目錄下的所有文件,保存到集合中,
2然后通過(guò)socker建立通信,通信建立成功后開(kāi)始傳輸日志,
3讀取指定目錄下的日志文件,解析內(nèi)容傳輸?shù)椒?wù)端,
4日志按行讀取,
5內(nèi)容頭部增加TAG以區(qū)分不同應(yīng)用的日志服務(wù)端是因?yàn)橛鞋F(xiàn)成的軟件,所以這里
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026上半年云南事業(yè)單位聯(lián)考文山州招聘143人考試備考題庫(kù)及答案解析
- 2026鄱陽(yáng)湖湖泊濕地綜合研究站實(shí)驗(yàn)支撐崗位招聘1人考試參考題庫(kù)及答案解析
- 2026年中核五〇四醫(yī)院?甘肅(蘭州)國(guó)際陸港中心醫(yī)院招聘司機(jī)筆試參考題庫(kù)及答案解析
- 2026年度黃山市歙縣事業(yè)單位統(tǒng)一公開(kāi)招聘工作人員51名筆試參考題庫(kù)及答案解析
- 2026重慶龍璟紙業(yè)有限公司招聘1人筆試備考試題及答案解析
- 浙商銀行嘉興分行2026年一季度社會(huì)招聘考試備考題庫(kù)及答案解析
- 2026銅陵分行社會(huì)招聘筆試參考題庫(kù)及答案解析
- 2026年1月黑龍江大慶市肇州縣招聘公益性崗位人員35人筆試備考試題及答案解析
- 2026年房地產(chǎn)行業(yè)中的網(wǎng)絡(luò)營(yíng)銷(xiāo)效益評(píng)估
- 2026年地震后的建筑評(píng)估與修復(fù)
- 2024-2025學(xué)年上學(xué)期深圳高一物理期末模擬卷1
- 胸痛中心聯(lián)合例會(huì)培訓(xùn)
- 臥式橢圓封頭儲(chǔ)罐液位體積對(duì)照表
- 國(guó)家職業(yè)技術(shù)技能標(biāo)準(zhǔn) 4-10-01-02 育嬰員 人社廳發(fā)201947號(hào)
- 天鵝到家合同模板
- 全球鈷礦資源儲(chǔ)量、供給及應(yīng)用
- 中考字音字形練習(xí)題(含答案)-字音字形專項(xiàng)訓(xùn)練
- 消防安全責(zé)任人任命書(shū)
- MOOC 數(shù)據(jù)挖掘-國(guó)防科技大學(xué) 中國(guó)大學(xué)慕課答案
- 2024屆新高考物理沖刺復(fù)習(xí):“正則動(dòng)量”解決帶電粒子在磁場(chǎng)中的運(yùn)動(dòng)問(wèn)題
- 中學(xué)體育與健康課程與教學(xué)論P(yáng)PT高職完整全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論