android利用Serialization向服务器端发送任意的文件(二)
?
public?class?AndroidClientActivity?extends?Activity?implements?OnClickListener{
?
?????????private?Button?btn1;
?????????private?String?filePath?=?"/sdcard/image/";
?????????private?String?fileName?=?"bln.jpg";
????@Override
????public?void?onCreate(Bundle savedInstanceState){
?
????????super.onCreate(savedInstanceState);
????????setContentView(R.layout.main);
????????btn1?= (Button)this.findViewById(R.id.btn1);
????????btn1.setOnClickListener(this);
????}
?????????public?void?onClick(View v)??{
?
???????????????????try?{
????????????????????????????//?建立和服务器的连接
????????????????????????????Socket socket =?new?Socket("192.168.0.10", 6666);
????????????????????????????//?创建FilePojo对象
????????????????????????????FilePojo fpo =?new?FilePojo();
????????????????????????????//?设定文件名
????????????????????????????fpo.setFileName(fileName);
?
????????????????????????????//?设定文件大小
????????????????????????????File f =?new?File(filePath?+?fileName);
????????????????????????????long?fileLength = f.length();
????????????????????????????fpo.setFileLength(fileLength);
????????????????????????????//?读取文件内容,并将其转换为byte[]
????????????????????????????FileInputStream fis =?new?FileInputStream(filePath?+?fileName);
????????????????????????????byte[] fileContent =?new?byte[(int) fileLength];
????????????????????????????fis.read(fileContent, 0, (int) fileLength);
????????????????????????????fpo.setFileContent(fileContent);
???????????????????????????
????????????????????????????//?将FilePojo对象fpo写到Socket client指定的输出流
????????????????????????????long?start = System.currentTimeMillis();
????????????????????????????ObjectOutputStream oos =?new?ObjectOutputStream(socket.getOutputStream());
????????????????????????????oos.writeObject(fpo);
????????????????????????????long?end = System.currentTimeMillis();
????????????????????????????Toast.makeText(this.getApplicationContext(),?"It takes "?+ (end - start) +?"ms", Toast.LENGTH_LONG).show();
????????????????????????????oos.flush();
????????????????????????????oos.close();
???????????????????}
???????????????????catch(Exception ioe)?{
?
????????????????????????????ioe.printStackTrace();
???????????????????}?}}
下面就是在AndroidManifest.xml中增加permission权限如下:
<!--?表示该程序可以读取sd卡上的内容?-->
<uses-permission?android:name="android.permission.READ_EXTERNAL_STORAGE"/>.
<!--?表示该程序可以联网?-->
?????????<uses-permission?android:name="android.permission.INTERNET"?/>
4、运行。
先运行服务端ObjectServer,再在Android手机上运行客户端AndroidClientActivity?。
?
