Android smb共享文件的下载
来源:互联网 发布:手机淘宝怎么抢购 编辑:程序博客网 时间:2024/05/05 21:16
package com.example.udp_url;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import android.R.integer;
import android.R.string;
import android.media.MediaMuxer.OutputFormat;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener
{
private SmbFile rootSmbFile;
private String cutPath, shareFileName;
private String localFolder = "/storage/sdcard1";
private List<SmbFile> smbFilesList = new ArrayList<SmbFile>();
private Handler handler;
private EditText mEditText, fEditText;
private TextView mTextView;
private Button mButton;
private int DOWNLOAD_SUCCESS = 1;
private int DOWNLOAD_ERROR = 2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = (EditText) findViewById(R.id.ip);
fEditText = (EditText) findViewById(R.id.folder);
mTextView = (TextView) findViewById(R.id.info);
mButton = (Button) findViewById(R.id.connect);
mButton.setOnClickListener(this);
handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what)
{
case 1 :
Toast.makeText(MainActivity.this, "download success",
Toast.LENGTH_SHORT).show();
break;
case 2 :
Toast.makeText(MainActivity.this, "download error",
Toast.LENGTH_SHORT).show();
break;
default :
break;
}
}
};
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean smbDowndload()
{
readFiles(rootSmbFile);
for (SmbFile smbFile : smbFilesList)
{
InputStream inputStream = null;
OutputStream outputStream = null;
try
{
inputStream = new BufferedInputStream(new SmbFileInputStream(
smbFile));
String localPath = localTree(smbFile.getPath());
File localFile = new File(localPath);
File file = localFile.getParentFile();
if (!file.exists())
{
file.mkdirs();
}
outputStream = new BufferedOutputStream(new FileOutputStream(
localFile));
byte[] buffer = new byte[1024 * 1024];
int i = 0;
while ((i = inputStream.read(buffer)) != -1)
{
outputStream.write(buffer, 0, i);
}
} catch (Exception e)
{
// TODO: handle exception
Log.i("Aaron", "download error");
return false;
} finally
{
try
{
outputStream.close();
inputStream.close();
} catch (Exception e2)
{
// TODO: handle exception
Log.i("Aaron", "close error");
return false;
}
}
}
return true;
}
public List<SmbFile> readFiles(SmbFile smbFile)
{
try
{
SmbFile[] alllSmbFiles = smbFile.listFiles();
for (SmbFile mSmbFile : alllSmbFiles)
{
if (mSmbFile.isDirectory())
{
readFiles(mSmbFile);
}
else
{
smbFilesList.add(mSmbFile);
}
}
} catch (SmbException e)
{
// TODO Auto-generated catch block
Log.i("Aaron", "read file error");
e.printStackTrace();
}
return smbFilesList;
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
smbDownLoadTask smb = new smbDownLoadTask();
cutPath = "smb://guest:@" + mEditText.getText().toString().trim();
shareFileName = fEditText.getText().toString().trim();
smb.execute(mEditText.getText().toString().trim(), shareFileName);
}
public class smbDownLoadTask extends AsyncTask<String, Void, Integer>
{
@Override
protected Integer doInBackground(String... params)
{
// TODO Auto-generated method stub
try
{
rootSmbFile = new SmbFile("smb://guest:@" + params[0] + "/"
+ params[1] + "/");
rootSmbFile.connect();
} catch (Exception e)
{
// TODO Auto-generated catch block
Log.i("Aaron", "connect error");
return -1;
}
return 1;
}
@Override
protected void onPostExecute(Integer result)
{
// TODO Auto-generated method stub
super.onPostExecute(result);
if (result == 1)
{
Toast.makeText(MainActivity.this, "success to connect",
Toast.LENGTH_SHORT).show();
new Thread(new down()).start();
}
else
{
Toast.makeText(MainActivity.this, "connect error",
Toast.LENGTH_SHORT).show();
}
/*
* if (smbDowndload("/storage/sdcard1")) {
* Toast.makeText(MainActivity.this, "Download success",
* Toast.LENGTH_SHORT).show(); } else {
* Toast.makeText(MainActivity.this, "Download error",
* Toast.LENGTH_SHORT).show(); }
*/
}
}
public class down implements Runnable
{
@Override
public void run()
{
// TODO Auto-generated method stub
// smbDowndload("/storage/sdcard1");
String storeDir = localFolder + File.separator + shareFileName;
File file = new File(storeDir);
if (file.exists())
{
deleteFiles(file);
}
if (smbDowndload())
{
/*
* Toast.makeText(MainActivity.this, "Download success",
* Toast.LENGTH_SHORT).show();
*/
handler.sendEmptyMessage(DOWNLOAD_SUCCESS);
Log.i("Aaron", "download success");
}
else
{
handler.sendEmptyMessage(DOWNLOAD_ERROR);
Log.i("Aaron", "download error");
/*
* Toast.makeText(MainActivity.this, "Download error",
* Toast.LENGTH_SHORT).show();
*/
}
}
}
public String localTree(String path)
{
return path.replaceAll(cutPath, localFolder);
}
public void deleteFiles(File file)
{
if (file.isFile())
{
file.delete();
return;
}
if (file.isDirectory())
{
File[] childFiles = file.listFiles();
if (childFiles == null || childFiles.length == 0)
{
file.delete();
return;
}
for (int i = 0; i < childFiles.length; i++)
{
deleteFiles(childFiles[i]);
}
file.delete();
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import jcifs.smb.SmbFileInputStream;
import android.R.integer;
import android.R.string;
import android.media.MediaMuxer.OutputFormat;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener
{
private SmbFile rootSmbFile;
private String cutPath, shareFileName;
private String localFolder = "/storage/sdcard1";
private List<SmbFile> smbFilesList = new ArrayList<SmbFile>();
private Handler handler;
private EditText mEditText, fEditText;
private TextView mTextView;
private Button mButton;
private int DOWNLOAD_SUCCESS = 1;
private int DOWNLOAD_ERROR = 2;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = (EditText) findViewById(R.id.ip);
fEditText = (EditText) findViewById(R.id.folder);
mTextView = (TextView) findViewById(R.id.info);
mButton = (Button) findViewById(R.id.connect);
mButton.setOnClickListener(this);
handler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what)
{
case 1 :
Toast.makeText(MainActivity.this, "download success",
Toast.LENGTH_SHORT).show();
break;
case 2 :
Toast.makeText(MainActivity.this, "download error",
Toast.LENGTH_SHORT).show();
break;
default :
break;
}
}
};
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public boolean smbDowndload()
{
readFiles(rootSmbFile);
for (SmbFile smbFile : smbFilesList)
{
InputStream inputStream = null;
OutputStream outputStream = null;
try
{
inputStream = new BufferedInputStream(new SmbFileInputStream(
smbFile));
String localPath = localTree(smbFile.getPath());
File localFile = new File(localPath);
File file = localFile.getParentFile();
if (!file.exists())
{
file.mkdirs();
}
outputStream = new BufferedOutputStream(new FileOutputStream(
localFile));
byte[] buffer = new byte[1024 * 1024];
int i = 0;
while ((i = inputStream.read(buffer)) != -1)
{
outputStream.write(buffer, 0, i);
}
} catch (Exception e)
{
// TODO: handle exception
Log.i("Aaron", "download error");
return false;
} finally
{
try
{
outputStream.close();
inputStream.close();
} catch (Exception e2)
{
// TODO: handle exception
Log.i("Aaron", "close error");
return false;
}
}
}
return true;
}
public List<SmbFile> readFiles(SmbFile smbFile)
{
try
{
SmbFile[] alllSmbFiles = smbFile.listFiles();
for (SmbFile mSmbFile : alllSmbFiles)
{
if (mSmbFile.isDirectory())
{
readFiles(mSmbFile);
}
else
{
smbFilesList.add(mSmbFile);
}
}
} catch (SmbException e)
{
// TODO Auto-generated catch block
Log.i("Aaron", "read file error");
e.printStackTrace();
}
return smbFilesList;
}
@Override
public void onClick(View v)
{
// TODO Auto-generated method stub
smbDownLoadTask smb = new smbDownLoadTask();
cutPath = "smb://guest:@" + mEditText.getText().toString().trim();
shareFileName = fEditText.getText().toString().trim();
smb.execute(mEditText.getText().toString().trim(), shareFileName);
}
public class smbDownLoadTask extends AsyncTask<String, Void, Integer>
{
@Override
protected Integer doInBackground(String... params)
{
// TODO Auto-generated method stub
try
{
rootSmbFile = new SmbFile("smb://guest:@" + params[0] + "/"
+ params[1] + "/");
rootSmbFile.connect();
} catch (Exception e)
{
// TODO Auto-generated catch block
Log.i("Aaron", "connect error");
return -1;
}
return 1;
}
@Override
protected void onPostExecute(Integer result)
{
// TODO Auto-generated method stub
super.onPostExecute(result);
if (result == 1)
{
Toast.makeText(MainActivity.this, "success to connect",
Toast.LENGTH_SHORT).show();
new Thread(new down()).start();
}
else
{
Toast.makeText(MainActivity.this, "connect error",
Toast.LENGTH_SHORT).show();
}
/*
* if (smbDowndload("/storage/sdcard1")) {
* Toast.makeText(MainActivity.this, "Download success",
* Toast.LENGTH_SHORT).show(); } else {
* Toast.makeText(MainActivity.this, "Download error",
* Toast.LENGTH_SHORT).show(); }
*/
}
}
public class down implements Runnable
{
@Override
public void run()
{
// TODO Auto-generated method stub
// smbDowndload("/storage/sdcard1");
String storeDir = localFolder + File.separator + shareFileName;
File file = new File(storeDir);
if (file.exists())
{
deleteFiles(file);
}
if (smbDowndload())
{
/*
* Toast.makeText(MainActivity.this, "Download success",
* Toast.LENGTH_SHORT).show();
*/
handler.sendEmptyMessage(DOWNLOAD_SUCCESS);
Log.i("Aaron", "download success");
}
else
{
handler.sendEmptyMessage(DOWNLOAD_ERROR);
Log.i("Aaron", "download error");
/*
* Toast.makeText(MainActivity.this, "Download error",
* Toast.LENGTH_SHORT).show();
*/
}
}
}
public String localTree(String path)
{
return path.replaceAll(cutPath, localFolder);
}
public void deleteFiles(File file)
{
if (file.isFile())
{
file.delete();
return;
}
if (file.isDirectory())
{
File[] childFiles = file.listFiles();
if (childFiles == null || childFiles.length == 0)
{
file.delete();
return;
}
for (int i = 0; i < childFiles.length; i++)
{
deleteFiles(childFiles[i]);
}
file.delete();
}
}
}
记得加权限
0 0
- Android smb共享文件的下载
- 共享文件下载--SMB
- SMB实现共享文件(上传、下载)
- SMB实现共享文件(上传、下载)
- java利用SMB共享文件进行局域网文件的下载及apk升级
- 基于SMB/JCIFS协议的共享文件上传和下载(局域网中共享文件获取文件)
- 基于SMB协议的共享文件读写
- SMB协议的共享文件读写
- 基于SMB协议的共享文件读写
- 基于SMB协议的共享文件读写
- 共享文件上传--SMB
- smb协议共享文件
- smb文件共享实现
- smb文件共享
- SMB文件共享
- SMB 文件共享
- Linux Windows 文件共享smb
- Linux查看Windows下的共享文件:smb服务
- 心的回响,梦的颂扬
- 首发股价大涨19.06%
- 数字技术(1) 第一章 概论
- SAP中日期时间函数总结
- SGU 105 数学题or找规律
- Android smb共享文件的下载
- 范型
- 类层次结构----读书笔记(上篇)
- POJ 2185Milking Grid
- 网记者采访时,一直称李某萍为“妻子”
- 第一个C#程序的坑爹问题
- Android开发之Serializable 和 Parcelable的区别(源代码分享)
- Runtime-动态创建类添加属性和方法
- DOM基础——节点