android利用Serialization向服务器端发送随便的文件(二)

android利用Serialization向服务器端发送任意的文件(二)?public?class?AndroidClientActivity?extends?Act

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?。

?