当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言:
 

 

 ·abstract class && interface 比较     »显示摘要«
    摘要:zz from 城市webclubabstract class和interface是java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显......
    摘要:一般的javamil发送附件的代码如下: bodypart = new mimebodypart(); datasource datasource = new filedatasource("c:\测试附件.doc"); bodypart.setdatahandler(new datahandler(datasource)); bodypart.setfilename(mime......


J2SDK 1.4中的新功能类
1.        nio

【程序编程相关:为什么我的图片显示不出来,是个筐,请高手

【推荐阅读:Mave项目管理实战演练

【扩展信息:JNDI全攻略之(一)

1.1.       说明:在新的i/o系统当中,我们将主要使用channel与buffer来描述我们底层的操作.

1.2.       模型:

1.3.       对channel进行读写:

/**

 * @author cenyongh@mails.gscas.ac.cn

 */

public class copyfile {

     public static void main(string[] args) throws exception {

         string in = args[0];

         string out = args[1];

         fileinputstream fis = new fileinputstream(in);

         fileoutputstream fos = new fileoutputstream(out);

         filechannel inc = fis.getchannel();

         filechannel outc = fos.getchannel();

         bytebuffer bb = bytebuffer.allocate(1024);

         while (true) {

              int ret = inc.read(bb);

              if (ret == -1) {

                   break;

              }

              bb.flip();

              outc.write(bb);

              bb.clear();

         }

     }

}

注:我们并没有直接对channel进行读写,而是通过buffer来对channel进行间接操作.这里有两个地方要注意,就是我们在拷贝的过程当中调用了flip()与clear()方法,这两个方法的作用,将在后面讲解.

 

 

 

1.4.       手工填充buffer

/**

 * @author cenyongh@mails.gscas.ac.cn

 */

public class writefile {

     public static void main(string[] args) throws exception {

         string out = args[0];

         string in = args[0];

         fileinputstream fin = new fileinputstream(in);

         fileoutputstream fout = new fileoutputstream(out);

         filechannel inc = fin.getchannel();

         filechannel outc = fout.getchannel();

         bytebuffer bb = bytebuffer.allocate(256);

         for (int i = 0; i < 256; i++)

              bb.put((byte) i);

         bb.flip();

         outc.write(bb);

 

 

 

         bb.clear();

         inc.read(bb);

         bb.flip();

         for (int i = 0; i < bb.limit(); i++) {

              system.out.println(bb.get());

         }

     }

}

注:通过调用buffer上的put()与get()方法,我们可以手工的往buffer当中填充数据.

 

 

 

1.5.       buffer的状态量.

buffer主要使用三个状态量position,limit,capacity来标记底层的状态.其中capacity表征buffer的最大容量,这个值在buffer被分配时设定,一般不会随着操作改变.position表征buffer的当前读写位置,不管是读操作还是写操作,都会导致position的增加.limit表征buffer的最大可读写位置,limit总是小于或等于capacity.

1.5.1.      结构图:

1.5.2.      flip()与clear()操作

flip(){


...   下一页
    摘要:我们来看一段最简单的swt程序是什么样子:package sean.test.swt;import org.eclipse.swt.widgets.display;import org.eclipse.swt.widgets.shell;public class simplestswt { public static void main(string[] args) { display displ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE