比如你又一个cell
在最左边有一个image, 最右边有一个button , 当设备翻转成landscape时 希望这2个组件还是在cell的两端
这时要做的是设置这2个组件(UIView)的autoresizingMask属性
我希望翻转时右边的button还是在屏幕最右边 那么就要编程式的设置
button.autoresizingMask= UIViewAutoresizingFlexibleLeftMargin;
你也可以在IB 里面可视化的设置autoresizing , 但这里注意,你希望button总在最右边 就要选中IB中autoresizing的右边的选项,但编程的时候就要设置UIViewAutoresizingFlexibleLeft Margin 是反的
同理 设置navi bar的背景图像 支持翻转
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;//autoresizing [navi.navigationBar addSubview:imageView]; [navi.navigationBar sendSubviewToBack:imageView];
客户端:
Client.java
package lee.socket; import java.io.BufferedInputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.Socket; public class Client { static DataInputStream din = null; static DataOutputStream dout = null; static Socket s = null; public static void main(String[] args) { try { s = new Socket("127.0.0.1", 2224); File file = new File("d:/05.jpg"); // 定义文件 FileInputStream fis = new FileInputStream(file); // 定义文件输入流 din = new DataInputStream(new BufferedInputStream(fis)); // 用缓存流包装文件输入流(提高读取速度),然后再包装成数据输入流 dout = new DataOutputStream(s.getOutputStream());// 定义数据输出流 dout.writeUTF(String.valueOf(file.length())); // 发送文件长度 byte[] buffer = new byte[1024]; // 定义缓存 int len = 0; while ((len = din.read(buffer)) != -1) { dout.write(buffer, 0, len); // 向服务器发送数据 } dout.flush(); } catch (IOException e) { System.out.println(e.toString()); } finally { try { if (din != null) { din.close(); din = null; } } catch (Exception e) { e.printStackTrace(); } try { if (dout != null) { // 最后一定要关闭输出流,不然数据发送不出去。导致一直连接着,不断开 dout.close(); dout = null; } } catch (Exception e) { e.printStackTrace(); } try { if (s != null) { s.close(); s = null; } } catch (Exception e) { e.printStackTrace(); } } } }
Android和客户端基本一样。
服务端:
Server.java
package lee.socket; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { static DataInputStream din = null; static DataOutputStream dout = null; static Socket s = null; public static void main(String[] args) { new Thread() { // 开启子线程 public void run() { try { ServerSocket ss = new ServerSocket(2224); // 这个必须在while外,不然会循环连接端口,出错 while (true) { System.out.println("--------等待用户连接--------------"); s = ss.accept(); System.out.println("--------用户连接上了--------------"); din = new DataInputStream(new BufferedInputStream(s .getInputStream()));// 使用缓存进行包装,提示读取速度 System.out.println("文件长度:" + din.readUTF()); // 显示接收文件长度 File file = new File("d:/01.jpg"); FileOutputStream fos = new FileOutputStream(file); dout = new DataOutputStream(new BufferedOutputStream( fos)); byte[] buffer = new byte[1024]; int len = 0; while ((len = din.read(buffer)) != -1) { dout.write(buffer, 0, len); } dout.flush(); dout.close(); // 下面的finally要等到循环结束后才执行,如果不执行close,文件无法正常打开 System.out.println("接受成功"); } } catch (IOException e) { e.printStackTrace(); } finally { // 等while循环结束后才会执行, try { if (dout != null) { dout.close(); dout = null; } } catch (Exception e) { e.printStackTrace(); } try { if (din != null) { din.close(); din = null; } } catch (Exception e) { e.printStackTrace(); } try { if (s != null) { s.close(); s = null; } } catch (Exception e) { e.printStackTrace(); } } } }.start(); } }
转自:http://shazhuzhu1.iteye.com/blog/965658
cd D:\workspace\RandomChatService\bin
D:
java -cp .;D:\workspace\RandomChatService\libs\mysql\connector-java-5.1.15-bin.jar MainService
这是我写的一个批处理,-cp是指需要搜索或指定哪些包需要用到,MainService则是含有main函数的程序的入口.
如果发现错误.最好把环境变量CLASSPATH改为:".;JAVA_HOME%\jdk1.6.0_24\lib\*.jar;%JAVA_HOME%\jre6\lib\*.jar"