ios/WebOS/Android 三足鼎立谁与争锋

再转一篇,这篇甚至连Chrome
OS都不提了,呵呵。

  滚滚长江东逝水,浪花淘尽英雄。是非成败转头空,青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢,古今多少事,都付笑谈中,简单的几句《临江仙》似乎将我们穿越到了魏蜀吴三足鼎立的烽火年代。

 

  惠普公司昨日透露,将于北京时间10日凌晨在美国发布首款基于WebOS的平板电脑PalmPad。根据此前的报道,惠普
PalmPad平板有三个版本,全部配置WebOS 2.51版系统。配置Mini
HDMI接口,带有前置和后置摄像头,分别具备130万和300万像素以及LED闪光灯。

  WebOS平板终于要上市了,我们先将惠普PalmPad平板电脑放在一边,一起来看看操作系统的三足鼎立吧!毋庸置疑系统的三足鼎立当然是苹果ios/惠普WebOS/Android操作系统。

宁教我负天下人,休教天下人负我!”
  苹果ios-魏

  苹果ipad自从上市以来就引领了平板电脑的市场,ipad在硬件以及系统方面都颇受消费者的喜爱,另外消费者对“水果”的产品已经有了很强的依赖性,只要使用“水果”产品就是站在科技时尚前沿的消费者。所以苹果的产品自“出生”以来就有他人无法比拟的霸气,这也是小编将它定位于魏国的原因。

  北京时间11月22日,苹果周一正式推出了最新的iOS 4.2版本操作系统,供iPad、iPhone和iPod
touch用户下载。与iOS 4.0和4.1版本系统相比,iOS
4.2新增100多项功能,其中包括多任务处理、文件夹、统一收件箱、游戏中心、AirPlay和AirPrint等。

  苹果CEO史蒂夫·乔布斯(Steve Jobs)称:“iOS
4.2将把iPad变成一款全新的产品,正好赶上今年的圣诞购物旺季。升级到iOS
4.2的iPad将再次成为其他平板电脑效仿的目标,但很少竞争对手能够真正做到。”iOS
4.2版本的iPad用户将可以同时运行多项应用,并可以迅速切换。通过文件夹功能,用户可以通过简单的拖放来组织各项应用。而统一收件箱允许用户在同一个收件箱内浏览所有帐户的邮件。

得民心者得天下
  Android-蜀

  治国之道,“得民心者得天下”不过通过蜀国的历史来看也未必如此。就目前来说,Android系统在手机领域已经和ios操作系统平分秋色,但是由于各大厂商都在抱Android的大腿,相比产品种类来看已经占据了智能手机的霸主地位。我们都知道在2011年将是平板爆发的年代,目前很多产品也相继采用了Android操作系统,它在与ios、WebOS的竞争中是否能够稳固现今的地位我们还不清楚,不过它的路不会像去年那么平坦倒是真的。

   在Android 3.0之前,已经有三星Galaxy
Tab等多款Android系统平板电脑面世。但显然,之前的Android平板只是简单的“手机放大版”,或仅做了少量的优化。而Android
3.0则是谷歌针对平板的大屏幕而做的全新设计,在界面,桌面widget等细节均做了大量改进。

  这些改进让Android 3.0在多任务处理、提醒等方面的使用体验更好。另外Android
3.0在很多界面上使用了3D效果(或许这会对硬件要求更高),在HOME界面、Youtube界面及Google
Books、Maps都有3D效果。比iOS更漂亮,在实用度上却不落下风。

迟来的王者,谁主沉浮无人知
  惠普WebOS-吴

  惠普斥资12亿美元收购了Palm公司,当然最吸引惠普眼光的是Palm的webOS系统,在惠普与Palm的webOS平台合为一体后,惠普会更加积极地参与快速增长的的智能手机及移动设备市场。而不会让webOS这一伟大的操作系统没落。从今天来看确实如此,惠普已经将webOS系统移植到了它们的PalmPad平板之中,这款平板于系统的表现究竟如何我们还不得而知,不过在上市不久后我们就会体验到这款产品,将会给平板产业带来什么样的改变。

  谁主沉浮?消费者说了算!

  现在消费者都清楚“老王卖瓜自卖自夸”的道理,各大厂商都说自己的产品是最好的,性能是最强的,但是究竟哪款产品是消费者喜欢的,还是由用户们说了算!不过对于系统来说,小编认为惯性要远远大于性能,就如我们有些用户还在使用XP系统一样,虽说它已经被时代淘汰,但是很多用户很难改变自己的使用习惯就继续用了下去。

  换句话说,好的操作系统抢占先机是王道,消费者用习惯了某种系统就很难去改变日常的使用习惯。在2011年这三个操作系统谁主沉浮?你说了算!

Chrome OS难获成功10大理由:功能单一居首(转载)

据国外媒体报道,美国知名IT杂志《eWeek》网络版今天撰文,称谷歌的ChromeOS平台将面临严重的失败风险,并列出了10条理由。以下为eWeek网站的全文:

  
  谷歌的ChromeOS平台将于2011年推出,毫无疑问,此平台届时必将成为轰动科技业界的一大产品,但这并不意味着该产品就会成功。

  
  谷歌的ChromeOS平台有可能会成为2011年科技业界的重大消息之源,这不仅是因为该产品系由科技业界最重要的的公司所生产,而且还因为该产品将会给消费者带来独特的操作系统体验,甚至还会有一些企业用户也急着想了解有关此平台的更多详情。

  
  尽管谷歌一直在不断完美其基于Web的操作系统,而且也准备在消费者市场广泛地推出此款产品,但是,目前的疑问也仍然存在,即这款基于Web的操作系
统到底能否成功。一方面,一些支持者表示,ChromeOS平台的确具有用户可能喜欢的功能,但与此同时,还有一些人士认为,此平台正面临着大量的外部压
力,特别是自身的一些严重的缺陷可能会极大地导致该产品丧失与其它操作系统的竞争能力。
  
  总而言之,谷歌的ChromeOS平台也面临着严重的失败风险,以下即是其中的10大原因。
  
  1、功能因素
  
  总体而言,用户将会根据ChromeOS平台的功能状况来对此操作系统作出判断。初看上去,ChromeOS平台具有相当多的功能,包括检测电子邮
件、网上冲浪、编辑Office文档、执行类似于台式电脑的诸多基本任务等,但是深入细看之后就会发现,ChromeOS平台并不能完成像Windows
或MacOSX等操作系统那样多的功能,在某些方面,Windows或MacOSX等操作系统的确要比ChromeOS强大很多,而且还具备了一些重要的
功能,例如高清视频编辑和编码等,而这些重要功能在ChromeOS平台上却很难完成。
  
  2、难以击败Windows
  
  微软的Windows操作系统在整个全球操作系统市场都占据着主导地位,谷歌要想借助ChromeOS平台来在短时间内改变Windows的市场主导
地位之可能性可谓是微乎其微。可以肯定的说,微软的操作系统仍将是普通消费者和企业用户继续选择的产品。也许,只有在谷歌让消费者信服了ChromeOS
平台之后,该产品可能才会成功的可能性,但从目前的状况来看,谷歌征服消费者转而使用ChromeOS平台的可能性很小,因而也就难以推动该操作系统迎来
成功的局面。
  
  3、企业因素
  
  毫无疑问,企业领域将是谷歌操作系统难以取得成功的重要阵地之一。企业往往要求操作系统能够具备与之相适应的一些重要功能,包括功率、软件兼容性、安
全性以及其它功能等,但是,谷歌的ChromeOS平台似乎缺少企业所需的多数功能。这当然是一个大问题。从年来的行业经验来看,企业已经证明,该领域业
已成为影响一些软件和硬件平台的成功与失败的重要因素,这种局面将暂时不会改变。如果谷歌无法吸引企业用户,那么要想让ChromeOS取得长期成功,那
可能会面临一些难题。
  
  4、重要问题:ChromeOS是必需产品吗?
  
  消费者最终决定是否想要购买一款产品时,往往需要考虑赎买该产品的必要性,而这也将成为横躺在谷歌ChromeOS平台成功之路上的重要问题之一。由
于经济萧条的影响,仍在经济困境中挣扎的消费者似乎并不急着购买一款新的操作系统,特别是功能并未超过现有操作系统的产品。在智能手机方
面,ChromeOS平台还算差强人意,但从台式电脑的角度来看,这款操作系统对于那些希望购买简单有效设备的消费者而言,将是一款难以接受的产品。

  
  5、制造商支持是关键
  
  如果没有制造商的支持,ChromeOS平台也可能会面临失败的命运。宏碁、三星以及其它几家公司目前都计划支持此款操作系统,但这还是一项长期的计
划。如果这些制造商看到此操作系统的销量未能达到预期,那么他们很可能会“跳船”,转而选择其它操作系统,这一点谷歌必须明白。谷歌吸引消费者关注
ChromeOS操作系统的时间越快,那么其也就能够越快的减少该产品的失败机会。
  
  6、消费者准备好了吗?
  
  如上所述,消费者需要决定,使用ChromeOS操作系统是否确有必要,但是,谷歌也必须考虑消费者市场是否做好了接受ChromeOS平台的准备。
科技爱好者们当然是准备好了,但是,那些不太密切关注科技行业的主流消费者们是否准备好了呢?如果他们已经习惯了使用Windows或MacOSX操作系
统,那么怎样才能让他们考虑改用ChromeOS呢?毕竟ChromeOS是一款新式的电脑操作系统。这一点,谷歌必须提前考虑,否则ChromeOS只
能迎接失败的命运。
  
  7、软件因素
  
  ChromeOS推出之时,谷歌就作出保证,表示用户将能够从谷歌公司的Chrome网络应用商店中使用他们所需的诸多相关应用程序,但是,此操作系
统并不支持针对台式电脑的Windows应用,此举也就意味着企业用户将无法很好地运用Chrome应用商店的诸多应用。另外,Chrome这些应用也将
很难吸引消费者前来购买,毕竟在消费者看来,这些应用的功能并不像他们已经购买的台式电脑操作系统相配备的应用那样强大。总而言之,在谈到软件的兼容性方
面,ChromeOS平台的确存在诸多不足之处。
  
  8、硬件因素
  
  如果ChromeOS平台软件方面存在问题的话,那么此问题也会殃及到硬件市场。Windows和MacOSX用户希望将其USB设备、
FireWire连接的产品以及其它硬件连接到ChromeOS设备上,并让这些硬件工作。唯一的问题是,只有这些硬件制造商考虑将这些产品与谷歌软件相
兼容,用户的那些想法才能实现。不过,这将是很长一段时间内的巨大难题,这将可能会引发消费者重点关注。
  
  9、Android成为竞争对手
  
  ChromeOS平台在推出之时,只是一款非重量级的操作系统,可能会成为上网本和平板电脑的有效操作系统。但是,谷歌面临的问题是,该公司的另一大
操作系统Android也是能够使用于上网本和平板电脑等设备的重要操作系统,此举也就意味着谷歌已经成为自己的竞争对手。从其自身而言,谷歌已经表示,
其并不认为Android与ChromeOS是竞争产品,但是,消费者会同意谷歌的这种说法吗,时间会告诉一切。
  
  10、Dataplan(数据规划)费用
  
  作为一款基于Web的操作系统,ChromeOS要求为用户提供一直联网的体验。用户在家使用电脑时,在Wi-Fi的帮助之外,可能不会面临严重的问
题,但是如果他们在室外使用电脑,而且又远离Wi-Fi网络,那么这些用户就将被迫通过3G来连接网络,当然,这就需要用户支付Dataplan费用。如
今,越来越多的消费者在付费使用Dataplan,但这并不意味着普通消费者还需交纳额外的成本费用。总而言之,ChromeOS平台用户在使用
Dataplan可能会交纳更多额外费用,这一点将是消费者难以接受的,因而也可能会造成ChromeOS平台丧失更多的市场普及机会。Chrome <wbr>OS难获成功10大理由:功能单一居首(转载)OS难获成功10大理由:功能单一居首(转载)” TITLE=”Chrome OS难获成功10大理由:功能单一居首(转载)” />

[转载]马上会跌,跌破一千

写得蛮好的,哈哈

原文地址:马上会跌,跌破一千作者:韩寒

最近我发现我钱包里老是没有钱,吃饭的时候掏出来只剩下几张十块,好在一碗面还能买。我开始思考,我一般出门都会往钱包里放个一千多块钱,何以呢。后来我终于想明白了,加满一次油需要六百,几个朋友一起随便吃个饭在花掉两三百,来回高速公路花去五十,在不给自己买任何东西的情况下,一千块就差不多了。

我不由感叹,那些收入两三千的朋友们,在这个城市里是如何生活的,当然你可以说他们不用加油,但毕竟你要过三十天日子,还要住。这个城市的大部分设施都不属于他们,他们唯一能做的就是看,好在我府慈悲,看城市并不需要缴养眼税。

回去的路上,我便开始回想。记得2000年,我刚出版第一本书,当时买了一台富康,因为那时只有富康桑塔纳和捷达,富康显得最动感时尚。当时还没有时尚这个词。唯一的遗憾就是名字土气了一点。当时油价3元,加满一箱油1百多,我出门带1000的习惯就是那个时候养成的,这点钱已经够我开到欧洲了。当时父母要我买房子,并不是因为要改善居住条件,也不是因为要投资炒楼,而是因为当时上海市房地产低迷,于是政府出台一个政策,购买商品房,退已缴纳的个人所得税。当时上海郊区的房价几百到一千元,市中心三千元,我说,这房价太贵了,太不合理了,市中心三千元一米,买一百平要三十万,老百姓要干十多年才能买得起房子,这是虚高的。干五年,买个一百平的房子,才是合理的。房价虚高了一倍。不能买。马上会跌,跌破一千。

后来我去了一次香港,觉得香港太贵了,怎么吃一个盖浇饭要四五十港币,当时港币和人民币是1比1.2左右,我在香港打了一次车,花了一百多人民币,觉得太不可思议了。一问香港的房价,都要几万元一米,酒店都要上千元一天,回到上海,身心舒畅。

2001年,我去了北京。我在望京租了一个房子,两室两厅两卫,房租一千多。当时版税都去练车改车了,差点连房子都没租起。后来终于积下五万块,在北京买了一套房子,当时房价是3800,我买了六十平,首付五万,月供一千二。房子位于管庄,名字很洋气,叫柏林爱乐。每天需要走京通高速从双桥出口下,令我疑惑的是,为什么这个房子是朝阳区的,但是我开车去通县狗市只要五分钟,而去朝阳公园却要半小时。但是很快,我发现,京通高速走到头连着就是长安街。于是,我很简约的告诉我父母,我住在长安街沿线。乡亲们又是一顿乱传,等我回老家,他们都羡慕的问我,听说你住在天安门边上,见到过国家领导人么?我说,我虽然不常见到,但我常嗅到,每当京通高速不通了以后,我就知道国家领导人要出来了,放行以后,我就能嗅嗅他们十几分钟前经过的尾气。

当时的油价还是三块多。我对朋友说,油价太贵了,得跌到一块才合理。要不然老百姓一个月工资就加几箱油,不合理。当时北京新源里都是站街的失足妇女,一失足只需要一百五十元,失足一夜两百元。

后来,由于我在北京迷失了,而且再迷失下去也要失足了,我就回到了上海。到了松江,租了一个房子,两室两厅两卫,租金三千元。当时油价四块多,我对朋友说,如果油价突破了五块,按照老百姓现在的收入,就是个大笑话。当时松江还没有一个五星酒店,我租在开元新都,一个新的小区,在大学城的对面。当时那里房价五千。朋友说,你买一个房子吧,但当时我实在买不起房子,我经过松江新城区密密麻麻的新楼盘,销售率是百分之一百,入住率是百分之一,我对朋友说,这里肯定要崩盘,这么多房子,哪有这么多人去住啊,五千一平方,就是个大笑话,按照老百姓现在的收入,得工作二十年才能买套两居室,等着吧,松江新城区迟早跌破一千,我预计五百元一平,到时候我再十万块钱买两百平。朋友说,你说的一向有道理,我现在买就砸在手里了,我要憋着。谢谢你给我的启发。

 

后来我给父母买了一个房子,当时在金山区朱泾镇,我贷款买了一个三居室,至今我依然非常喜欢那套房子,虽然不大,但是非常工整。当时房价是三四千,花了我所有的积蓄。房子楼下就是洗头的,洗头一次十元,洗车一次五元,打飞机三十元。当时我已经几乎停止写作,赛车刚刚起步,过了最苦的日子,进了全国最好的车队当主力车手,年薪八万元,但因为经常不幸获得第四名,奖金就没有,一年也有个十万多的收入。加上以前有些版税,我也很满意那样的生活,就是觉得这房子买的时候遇到了最高峰,以后肯定会跌进一千以内。不过让家人早些住的舒服点也是值得。我当时都忘了北京有个小房子,我在想,那破地方估计快跌破一千了吧。不去想省的烦心。

当年发生惊人事件,油价突破了五元。我想,这得游行了吧。当然,我错了。国民们真的很好,统治者如果能摊上中国,那真是莫大的福气。

 

 

后来就是一长串的省略号,就不细说了。那个要憋着的朋友我也再没见着。我的跌破一千的预言也时常被各种朋友们提起,有一天一个朋友说,你丫的直觉太准了,真的跌破一千了,不过不是楼市,是股市。我不炒股,但知道个大概,我说,什么,股市跌成三位数了?朋友说,是啊。我说,哦,你最近忙什么呢。朋友说,我一直相信你的老百姓买不起就是硬道理,楼市必然跌破一千的理论,于是我就去炒股了。

 

到了今天,油价已经在接近十元了。我觉得油价应该更高,高到让那些不顾大局不顾领导利益动不动要自焚的刁民们连一升汽油都买不起,这就从根本上杜绝了这类事件的发生,而房价也应该更高,高到根本就够不着,这样才能让那些非要房子不可的姑娘们都嫁给有钱人,保障我国的年轻男人一心创业,心无杂念,身无压力。税率也应该更高,个人所得税百分之八十,不光买房子要交房产税,生孩子还要交产房税,政府破坏环境以后老百姓要交纳环境保护税,赚了要交利润税,亏了要交经验税,死人要交遗产税,壮丁要交遗精税,男人要交睡人税,女人要交被睡税,至于为什么这样更好,反正我也不知道,只知道小时候墙上就写着,纳税光荣。能把字用红色写在墙上那么大而且不被擦掉的,都是不能惹的。

 

至于我,还是习惯了揣着一千块钱出门,只是前几天去了一次香港,觉得那里物价怎么这么便宜。今天去肯德基,买了一个甜筒,给了两块钱,服务员说,三块。可能是肯德基麦当劳涨的少,我还停留在汉堡十元的年代里。但是有一个喜讯,在房价油价电费水费齐涨的今天,终于有一样政府收费项目减价了,而且一减就减去了将近一半的价格,而那些涨价的项目往往每次只涨一两成,说明政府该大方的地方还是很大方的——登记结婚从9元降到了5元,也就是说,如果你一辈子结婚三次,政府为你省去了足足十二块。谢谢。

 

java httpurlconnection 发送cookie时,cookie要在Post前发送



Java代码 
  1. public InputStream getStream(URL url,String post,URL cookieurl){  
  2.         HttpURLConnection connection;  
  3.         String cookieVal null 
  4.         String sessionId “” 
  5.         String key=null 
  6.         if(cookieurl!=null){              
  7.             try 
  8.                 connection (HttpURLConnection)cookieurl.openConnection();  
  9.                 for (int 1(key connection.getHeaderFieldKey(i)) != nulli++  
  10.                     if (key.equalsIgnoreCase(“set-cookie”))  
  11.                         cookieVal connection.getHeaderField(i);  
  12.                         cookieVal cookieVal.substring(0cookieVal.indexOf(“;”));  
  13.                         sessionId sessionId+cookieVal+“;” 
  14.                      
  15.                  
  16.                 InputStream in connection.getInputStream();  
  17.                 System.out.println(sessionId);  
  18.             }catch(MalformedURLException e){  
  19.                 System.out.println(“url can’t connection”);  
  20.                 return null 
  21.             }catch(IOException e){  
  22.                 System.out.println(e.getMessage());  
  23.                 return null 
  24.              
  25.          
  26.   
  27.         try  
  28.             connection (HttpURLConnection)url.openConnection();  
  29.             //这个要写在Post前,否则会取不到值,原因我不知道  
  30.             if(cookieurl!=null){  
  31.                 connection.setRequestProperty(“Cookie”sessionId);  
  32.              
  33.             if(post!=“”){  
  34.                 connection.setDoOutput(true);  
  35.                 connection.setRequestMethod(“POST”);  
  36.                 connection.getOutputStream().write(post.getBytes());  
  37.                 connection.getOutputStream().flush();  
  38.                 connection.getOutputStream().close();  
  39.              
  40.             int responseCode connection.getResponseCode();  
  41.             int contentLength connection.getContentLength();  
  42.             // System.out.println(“Content length: “+contentLength);  
  43.             if (responseCode != HttpURLConnection.HTTP_OK return(null);  
  44.             InputStream in connection.getInputStream();  
  45.             return(in);  
  46.          
  47.         catch(Exception e)  
  48.             // System.out.println(e);  
  49.             // e.printStackTrace();  
  50.             return(null);  
  51.          
  52.           
  53.      

转自:http://stephenjqj.javaeye.com/blog/477194

JDK中的URLConnection参数详解



针对JDK中的URLConnection连接Servlet的问题,网上有虽然有所涉及,但是只是说明了某一个或几个问题,是以FAQ的方式来解决的,而且比较零散,现在对这个类的使用就本人在项目中的使用经验做如下总结: 

1:> URL请求的类别: 

分为二类,GET与POST请求。二者的区别在于: 

    
a:) get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, 

    
b:) post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。 

2:> URLConnection的对象问题: 

URLConnection的对象,如下代码示例: 



//
下面的index.jsp由<servlet-mapping>映射到 

// 一个Servlet(com.quantanetwork.getClientDataServlet) 

// 该Servlet的注意点下边会提到 

URL url = new URL(http://localhost:8080/TestHttpURLConnectionPro/index.jsp); 



URLConnection rulConnection 
= url.openConnection();// 此处的urlConnection对象实际上是根据URL的 

          
// 请求协议(此处是http)生成的URLConnection类 

          
// 的子类HttpURLConnection,故此处最好将其转化 

          
// 为HttpURLConnection类型的对象,以便用到 

          
// HttpURLConnection更多的API.如下: 



HttpURLConnection httpUrlConnection 
= (HttpURLConnection) rulConnection; 





3:> HttpURLConnection对象参数问题 

// 设置是否向httpUrlConnection输出,因为这个是post请求,参数要放在 

// http正文内,因此需要设为true, 默认情况下是false; 

httpUrlConnection.setDoOutput(true); 



// 设置是否从httpUrlConnection读入,默认情况下是true; 

httpUrlConnection.setDoInput(true); 



// Post 请求不能使用缓存 

httpUrlConnection.setUseCaches(false); 



// 设定传送的内容类型是可序列化的java对象 

// (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException) 

httpUrlConnection.setRequestProperty(Content-typeapplication/x-java-serialized-object); 



// 设定请求的方法为”POST”,默认是GET 

httpUrlConnection.setRequestMethod(POST); 



// 连接,从上述第2条中url.openConnection()至此的配置必须要在connect之前完成, 

        httpUrlConnection.connect(); 





4:> 
HttpURLConnection连接问题: 


// 

此处getOutputStream会隐含的进行connect(即:如同调用上面的connect()方法, 

// 所以在开发中不调用上述的connect()也可以)。 

OutputStream outStrm = httpUrlConnection.getOutputStream(); 



Http学习之使用HttpURLConnection发送post和get请求

最常用的Http请求无非是get和post,get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet,post与get的不同之处在于post的参数不是放在URL字串里面,而是放在http请求的正文内。

在Java中可以使用HttpURLConnection发起这两种请求,了解此类,对于了解soap,和编写servlet的自动测试代码都有很大的帮助。

下面的代码简单描述了如何使用HttpURLConnection发起这两种请求,以及传递参数的方法:

public   class  HttpInvoker 

{


    

public   static   final  String GET_URL 
=   http://localhost:8080/welcome1
;


    

public   static   final  String POST_URL 
=   http://localhost:8080/welcome1
;


    

public   static   void  readContentFromGet() 
throws  IOException 

{

        

//  拼凑get请求的URL字串,使用URLEncoder.encode对特殊和不可见字符进行编码

        String getURL 
=  GET_URL 
+   ?username=

                

+  URLEncoder.encode(
fat man utf-8 );

        URL getUrl 

=   new  URL(getURL);

        

//  根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,

        

//  返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnection

        HttpURLConnection connection 
=  (HttpURLConnection) getUrl

                .openConnection();

        

//  进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到

        

//  服务器
        connection.connect();

        

//  取得输入流,并使用Reader读取

        BufferedReader reader 
=   new  BufferedReader(
new  InputStreamReader(

                connection.getInputStream()));

        System.out.println(

=============================
);

        System.out.println(

Contents of get request
);

        System.out.println(

=============================
);

        String lines;

        

while  ((lines 
=  reader.readLine()) 
!=   null
{

            System.out.println(lines);

        }



        reader.close();

        

//  断开连接
        connection.disconnect();

        System.out.println(

=============================
);

        System.out.println(

Contents of get request ends
);

        System.out.println(

=============================
);

    }




    

public   static   void  readContentFromPost() 
throws  IOException 

{

        

//  Post请求的url,与get不同的是不需要带参数

        URL postUrl 
=   new  URL(POST_URL);

        

//  打开连接
        HttpURLConnection connection 
=  (HttpURLConnection) postUrl

                .openConnection();

        

//  Output to the connection. Default is

        

//  false, set to true because post

        

//  method must write something to the

        

//  connection

        

//  设置是否向connection输出,因为这个是post请求,参数要放在

        

//  http正文内,因此需要设为true

        connection.setDoOutput(
true );

        

//  Read from the connection. Default is true.

        connection.setDoInput(
true );

        

//  Set the post method. Default is GET

        connection.setRequestMethod(
POST );

        

//  Post cannot use caches

        

//  Post 请求不能使用缓存

        connection.setUseCaches(
false );

        

//  This method takes effects to

        

//  every instances of this class.

        

//  URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。

        

//  connection.setFollowRedirects(true);


        

//  This methods only

        

//  takes effacts to this

        

//  instance.

        

//  URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数

        connection.setInstanceFollowRedirects(
true );

        

//  Set the content type to urlencoded,

        

//  because we will write

        

//  some URL-encoded content to the

        

//  connection. Settings above must be set before connect!

        

//  配置本次连接的Content-type,配置为application/x-www-form-urlencoded的

        

//  意思是正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode

        

//  进行编码
        connection.setRequestProperty(
Content-Type ,

                

application/x-www-form-urlencoded
);

        

//  连接,从postUrl.openConnection()至此的配置必须要在connect之前完成,

        

//  要注意的是connection.getOutputStream会隐含的进行connect。

        connection.connect();

        DataOutputStream out 

=   new  DataOutputStream(connection

                .getOutputStream());

        

//  The URL-encoded contend

        

//  正文,正文内容其实跟get的URL中’?’后的参数字符串一致

        String content 
=   firstname=   +  URLEncoder.encode(
一个大肥人 utf-8 );

        

//  DataOutputStream.writeBytes将字符串中的16位的unicode字符以8位的字符形式写道流里面

        out.writeBytes(content); 


        out.flush();

        out.close(); 

//  flush and close

        BufferedReader reader 
=   new  BufferedReader(
new  InputStreamReader(

                connection.getInputStream()));

        String line;

        System.out.println(

=============================
);

        System.out.println(

Contents of post request
);

        System.out.println(

=============================
);

        

while  ((line 
=  reader.readLine()) 
!=   null
{

            System.out.println(line);

        }



        System.out.println(

=============================
);

        System.out.println(

Contents of post request ends
);

        System.out.println(

=============================
);

        reader.close();

        connection.disconnect();

    }




    




    

public   static   void  main(String[] args) 

{

        

//  TODO Auto-generated method stub


        
try  
{

            readContentFromGet();

            readContentFromPost();

        }

 
catch  (IOException e) 

{

            

//  TODO Auto-generated catch block

            e.printStackTrace();

        }



    }



}

上面的readContentFromGet()函数产生了一个get请求,传给servlet一个username参数,值为”fat
man”。
readContentFromPost()函数产生了一个post请求,传给servlet一个firstname参数,值为”一个大肥人”。
HttpURLConnection.connect函数,实际上只是建立了一个与服务器的tcp连接,并没有实际发送http请求。无论是post还是get,http请求实际上直到
HttpURLConnection
.getInputStream()这个函数里面才正式发送出去。

readContentFromPost()
中,顺序是重中之重,对connection对象的一切配置(那一堆set函数)都必须要在connect()函数执行之前完成。而对
outputStream的写操作,又必须要在inputStream的读操作之前。这些顺序实际上是由http请求的格式决定的。

http
请求实际上由两部分组成,一个是http头,所有关于此次http请求的配置都在http头里面定义,一个是正文content,在connect()函
数里面,会根据HttpURLConnection对象的配置值生成http头,因此在调用connect函数之前,就必须把所有的配置准备好。

紧接着http头的是http请求的正文,正文的内容通过outputStream写入,实际上outputStream不是一个网络流,充其量是个字符串流,往里面写入的东西不会立即发送到网络,而是在流关闭后,根据输入的内容生成http正文。


此,http请求的东西已经准备就绪。在getInputStream()函数调用的时候,就会把准备好的http请求正式发送到服务器了,然后返回一个
输入流,用于读取服务器对于此次http请求的返回信息。由于http请求在getInputStream的时候已经发送出去了(包括http头和正
文),因此在getInputStream()函数之后对connection对象进行设置(对http头的信息进行修改)或者写入
outputStream(对正文进行修改)都是没有意义的了,执行这些操作会导致异常的发生。

转自:http://blog.csdn.net/pandazxx/archive/2007/06/18/1657109.aspx

[转载]东南大学校歌释义

母校校歌




东南大学校歌(调寄《临江仙》)  


东揽钟山紫气,北拥扬子银涛。  



六朝松下听箫韶。  

齐梁余韵在,太学令名标。  
百载文枢江左,东南辈出英豪。  

海涵地负展宏韬。日新臻化境,四海领风骚。 





(东南大学校歌下载地址:http://www.seu.edu.cn/s/3/t/123/p/1/c/11/d/6817/list.htm)

 

   
这是一首以《临江仙》词调写成的歌词。《临江仙》属双调,间于中调与小令间。柳永《乐章集》入
“仙吕调”。“仙吕调”是“黄钟宫”的六调之一,“黄钟大吕”属高亢激越的声调,故极长于抒情。《临江仙》别体很多(共13种),此用第六体(依《词律》)。开头用两个六字句,上下片结尾用两个五字句,字数相同,平仄相反,易于形成对仗。全词仅58字,也方便记诵。 

   
词用一组工整的对仗句开头:“东揽锺山紫气,北拥扬子银涛”,首先与出东大的地理位置。东大地处南京,又位于锺山之西南。锺山,一名蒋山,乃至南京第一名胜。山高高耸立于城东北,距东南大不仅两三华里,从学校望去,不仅山似乎近在咫尺,甚至草木也依稀可辩。东晋时,因山有紫色石而被南迁的达官贵人改名“紫金山”。其实,真紫金山在山西境内,东晋南渡士人只是借此慰藉自己的思乡之情。这里的“紫气”
不是用老子“紫气东来”之典,而是切“紫金山”这名。庚信《哀江南赋》中便有“昔之虎踞龙盘,加以黄旗紫气”之句。由于山近,仿佛可将山中之山岚紫气“揽
”之入怀。后一句切东大位于扬子江畔。“北拥”二字又明言学校主要部分在江南却又横跨长江两岸,“江南”是令天下人魂牵梦绕之地,谢脁《入朝曲》云:“江南佳丽地,金陵帝王州。”况且又得锺山之拱卫,依山傍水:山是名扬天下之山,水是全国最大之水,得山水之滋养,诞生这样一所全国名校具有了地域上的优势。

   
这里很注意炼字炼句,而着力于两个动词“揽”和“拥”。前者有举手可及之义,明言锺山与该校相邻关系;而一“拥”字,似乎将万里长江“拥”入怀中,既有《岳阳楼记》中“涵远山,吞长江,浩浩荡荡”的磅礴气势,又暗指东大脚跨长江两岸,两岸四地,而长江居其中,似乎“拥”长江入校中,自然气势夺人。 

   
这两句又运用了工整的对仗句,“东”与“北”同属方位词,“揽”和“拥”均属动词,而主语均为省略了的“东南大学”。“锺山”与“扬子”是地名对(山水对)。“紫气”与“银涛”也对得很工,“紫”、“银”均是色彩。李白写长江时曾云:“解道澄江静如练,令人长忆谢玄晖”,谢玄晖(脁)曾以白“练”比喻长江的静态,“银涛”与“白练”异中有同,拥“银涛”入怀,颇有诗意。这两句不仅写出东大地理位置的优势,也写出其依山傍水之美,给人以美的感受。且“揽”、“拥”气魄宏大,透出东大不凡的“大气”。

   
“六朝松下听箫韶”(此处“听”读ting)一句,仿佛电影中由大的广角镜头转为小的特写镜头,从广阔的大江、高峻的大山,转为写一棵老松树。迅速把焦距对准东南大学本身。“六朝松”是东大西北角的一棵古树,相传原来长于六朝宫中。此句由写东大的地理位置转而写其历史,其转折点竟是这棵并不起眼的老松树,它没有栖霞山、庐山的六朝松高大挺拔,却给人以岁月沧桑之感。“六朝”是指历史上东吴、东晋、宋、齐、梁、陈,这几个朝代累计也有三百多年,从陈灭亡至今也已一千四百余年,人活不过百年,而这棵松树竟活了千年以上,树的古老道出这块土地的古老、历史的古老。于此古树下所听之“箫韶”,又是舜时的古乐,这是更古老的文化。《书经.益稷》曰:“箫韶九成,凤凰来仪。”“箫韶”,也就是“韶”乐。《论语》中有“(孔)子在齐闻‘韶’,三月不知肉味。曰:‘不图为乐之至于斯也。’”六朝松是古老的物质遗产,而“箫韶”则是古老的文化遗产,这是将二者有机结合,说明对古老的传统文化与人文精神的传承。“箫韶”二字乃叠韵字,并不十分通俗。但加一“听”字,则不难理解,显然是可听之物,系音乐之类,与“
箫韶”的本义便非常接近。“听箫韶”显得典雅、华贵,使东大这块古老的土地也有了一种神圣之感。“六朝松下听箫韶”,显然以中华文明的传承者自居,东大是
“名校”、“老校”,至此已尽在不言之中。

   
“齐梁遗韵在,太学令名标”二句,是历史的回顾。是由“六朝松下听箫韶”引发的思古之幽情。就在东大这块古老的土地上,一千八百年来,有多少可歌可泣的历史往事,有多少辉煌的、足以使我辈引以为荣的往事。从东吴永安元年(258年)设“五经博士”
和刘宋时雷次宗在鸡笼山下的这块土地上办学,讲经学、玄学、史学、文学开始,中国便有了高等教育,而东南大学便是其发源地之一。 

   
“齐梁”只是六朝中的两朝,却是南朝文化高度发展的时期,中国最早的格律诗“永明体”诗就产生于此时,中国最早的文人词梁武帝、沈约等的多首《江南弄》也产生于此时,《昭明文选》也于此时此地编成。祖冲之任职之华林学府,校试指南车之乐游苑也在今东大校园中,而梁钟嵘《诗品》、刘勰的《文心雕龙》等也都产生于齐梁时期,故在中国文化史上常以“齐梁”代六朝。“遗韵”,流风遗韵的缩语,六朝已过去千年,但六朝的文彩风流世代流传,而东大这块神奇的土地正是这六朝文化的源头。 

   
明代定都南京,洪武十四年(1381年)在东大这块土地上设国子监,后又改名“南雍”,这是当时的太学。加以东吴、刘宋时在此办学,均可称“太学”。“令名”,美名。“名标”,“名标青史”的缩语。明成祖曾于此编成《永乐大典》,成书后藏于南京文渊阁(东大北围墙外和平公园一带)。这两句道出了东大这块土地上曾对中国历史,尤其是对中华文化作出的贡献。虽然这两句较之东大厚重的历史文化积淀而言太简略了,但有此二句,已比全国的其他任何院校显得历史更悠久更深厚,而使东大人产生一种历史自豪感。 

   
“齐梁遗韵在,太学令名标”二句,又构成对仗。词的对仗没有律诗严格,这里用宽对,整炼之中又有几分松动,反而显得不板滞。此处没有为对仗而追求生硬的字面,而是信口道来,流畅而自然。仿佛千年的历史长河在静静流淌,在柔和的月光下,只是泛起粼粼的水波。这里也未着力去描绘这些“水波”,犹如家财亿万的巨富,对价值连城的珍宝也只是不十分在意的一提,无心着意炫耀,显得更雍容、大度。 

   
词的下片以“百载文枢江左”一句作转折,把地理的描述、辉煌的校前史的回顾打住,转而写建校以来的峥嵘岁月。“百载”是缩略词,可指目前的建校百年,即便一百多年、二百年也可略称“百载”,例如“二万五千里长征”可略为“万里长征”。“百载”相对于六朝以来的漫长历史而言是很短暂的。但毕竟百年前才有了这所现代意义的大学。这一句也是对百年校史的集中概括。“文枢江左”四字高度凝炼地说出其在中国教育界的地位。“文枢”,文化枢纽,文化中枢。三江师范学堂以来的百余年,使该校成了南方的文化中心之一。“江左”,即江东。古人叙地理以东为左,以西为右,故称江东为江左。万里长江一直由西向东流淌,但到了安徽芜湖以后转向东北再偏北方向流过,所以长江流经南京附近时,几乎作南北流淌,江的两岸不是一边是北、一边是南,而是一边是东、一边是西。人们站在长江大桥上这种感受特别明显。历史上称东吴为“江东”,其疆域大致相当于今江浙皖赣四省。“文枢江左”
一句自负而有分寸,实际上中央大学时期我校远不止是“江左文枢”,而是“天下文枢”(古人称“天下”实仅指中国)。 

   
“文枢江左”一句较为典雅含蓄,相比较下一句“东南辈出英豪”则较为直白。诗词写作、文章写作均应有变化。古人说:“文如看山不喜平”,含蓄是优点,若句句含蓄则显得晦涩艰深。“东南”二字有二义性,本可指我国的东南一带,明清以来,东南一带是天下人才之渊薮。清朝近三百年间,江苏出的状元就占全国的一半以上。然而“东南”二字现出在东南大学校歌中,它就更多指这所大学。百年以来,东南大学和全国少数几所名牌大学一样,涌现过一大批能改写中国历史的大人物。这里既有大科学家、文学家、艺术家、军事家,也有像江泽民同志那样的大政治家。还有更多名声虽不显赫、却也成就卓著的人物。故云:“东南辈出英豪。” 

   
“海涵地负展宏韬”一句是下片的过渡,从昨天、今天过渡到写明天,写未来,同时此句又揭示了东大作为名牌大学的办学理念与办学思想。“海涵地负”,谓大地负载万物,海洋容纳百川,形容包罗万象,含蕴丰富,也比喻人的学问博大精深。用在这里,它应具有以下内涵:一是名校的胸襟与器识:从领导到教师,应当有一种雍容阔大的气度,能吸纳各种各样的人才;二是作为一所研究性、开放性、综合性的大学,要给各学科以宽松的生存发展空间,多学科的相互共存与融合,才能造就一个可以造就文化大师、科学大师的人文环境和科学环境;三是作为办学思想,东南大学应当容许各种办学风格、各种学术流派的平等竞争,要能兼容并包;四是作为一所名牌大学,它是知识和学术的海洋,应当有一批博大精深、能在自己某一学术领域内领国际、国内风骚数年、数十年、乃至数百年的大师级的专家,他们今天为东大的辉煌辛苦耕耘、鞠躬尽瘁,也为东大日后的持续发展和创建世界高水平大学奠定基础。

   
“展宏韬”意为施展宏图大略。“韬”出于《孙子兵法》,有龙韬、虎韬、豹韬等六韬,此处
“宏韬”指学校的远景规划、宏大的发展计划。用一“展”字,有发挥、实践之意。这里没有半点犹疑和彷徨。有上述“海涵地负”的帅才、将才、人才,实现“宏韬”则毋庸置疑。 

   
词的结尾二句既是对东大未来的展望,也是全校师生奋斗的长远目标。面对日益激烈的国际、国内的竞争,科学、经济、文化、教育事业的发展对未来的高等教育尤其是象东大这样的名牌大学提出了很高的要求。“日新臻化境”,才能适应形势的变化,“日新”语本《易经.系辞上》:“富有之谓大业,日新之谓盛德。”孔颖达疏:“其德日日增新。”在信息时代的今天,科学技术日新月异,社会也瞬息万变,人们的思想观念也须日日更新。道德的升华、技术的进步、观念的更新,均须达到一个全新的境界。“化境”原出《庄子》的“物化”思想,即庖丁解牛的以“无厚”入“有间”
的思想。所谓“无厚”者,“金之至精,炼之至熟,刃之至神,而厚之至变,至化者也。”后引申为诗之“化境”,是指诗人举重若轻,不见笔墨痕迹的深厚功力,创作出思想与艺术高度统一的、浑然一体的艺术境界。“化境”是诗歌作品所达到的最高美学境界。进一步引申,“化境”是艺术造诣达到精妙的境界,可与造化媲美。一个人,一个学校达此“仙境”,其精神、科技、文化均臻于最高的境界。“四海领风骚”也就势所必然。 

   
“四海”一语出自《书经》:“文命敷于四海。”古时认为中国四面皆海,中国为海内,外国是海外,四海即指海内外,也即天下。毛主席也曾云:马列主义是“放之四海而皆准”的真理,其中“四海”亦指世界。“风骚”本指《诗经》之《国风》和《离骚》,古代读书人认为“风”“骚”是文学的极至。“领风骚”指居世界学界的前列,也即该校要成为世界高水平大学的婉转说话。清人赵翼《论诗绝句》曾去:“江山代有才人出,各领风骚数百年。”校领导已制定出五十年的远期发展目标,要把东大在21世纪中叶建成世界高水平大学,我们对此将抱定必胜的信念。

作者:王步高 
(人文学院教授、博士生导师)

 





东南大学校歌





词作者: 
  王步高1947年出生,扬中县人,先后就读于南京大学(本科)、吉林大学(硕士)、南京师范大学(博士),师从唐圭璋教授。曾在中学、出版社任职近二十年,现为我校人文学院中文系教授,兼《中华词学》主编、中大校友诗社总干事等。潜心诗词研究与创作,有著作三、四十种,约1700万字,获奖二十余项。 

曲作者: 
  印青 总政歌舞团国家一级作曲。作有大量的优秀军旅歌曲,多首获大奖。其代表作有“走进新时代”、“大西北”等。是当今具有较大影响的中青年作曲家。他在为我校校歌作曲时,古韵风与现代气息结合,曲调具有昆曲音韵;同时采用了中等速度的行进节奏,体现了稳健、自豪、向上的精神风貌。  

 

[Java]读取文件方法大全

1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容

public class ReadFromFile {

    

    public static void readFileByBytes(String fileName) {

        File file = new File(fileName);

        InputStream in = null;

        try {

            System.out.println(以字节为单位读取文件内容,一次读一个字节:);

            // 一次读一个字节
            in = new FileInputStream(file);

            int tempbyte;

            while ((tempbyte = in.read()) != 1{

                System.out.write(tempbyte);

            }

            in.close();

        catch (IOException e) {

            e.printStackTrace();

            return;

        }

        try {

            System.out.println(以字节为单位读取文件内容,一次读多个字节:);

            // 一次读多个字节
            byte[] tempbytes = new byte[100];

            int byteread = 0;

            in = new FileInputStream(fileName);

            ReadFromFile.showAvailableBytes(in);

            // 读入多个字节到字节数组中,byteread为一次读入的字节数
            while ((byteread = in.read(tempbytes)) != 1{

                System.out.write(tempbytes, 0byteread);

            }

        catch (Exception e1) {

            e1.printStackTrace();

        finally {

            if (in != null{

                try {

                    in.close();

                catch (IOException e1) {

                }

            }

        }

    }

    

    public static void readFileByChars(String fileName) {

        File file = new File(fileName);

        Reader reader = null;

        try {

            System.out.println(以字符为单位读取文件内容,一次读一个字节:);

            // 一次读一个字符
            reader = new InputStreamReader(new FileInputStream(file));

            int tempchar;

            while ((tempchar = reader.read()) != 1{

                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。

                // 但如果这两个字符分开显示时,会换两次行。

                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
                if (((chartempchar) != \r{

                    System.out.print((chartempchar);

                }

            }

            reader.close();

        catch (Exception e) {

            e.printStackTrace();

        }

        try {

            System.out.println(以字符为单位读取文件内容,一次读多个字节:);

            // 一次读多个字符
            char[] tempchars = new char[30];

            int charread = 0;

            reader = new InputStreamReader(new FileInputStream(fileName));

            // 读入多个字符到字符数组中,charread为一次读取字符数
            while ((charread = reader.read(tempchars)) != 1{

                // 同样屏蔽掉\r不显示
                if ((charread == tempchars.length)

                        && (tempchars[tempchars.length  1!= \r)) {

                    System.out.print(tempchars);

                else {

                    for (int = 0< charread; i++{

                        if (tempchars[i] == \r{

                            continue;

                        else {

                            System.out.print(tempchars[i]);

                        }

                    }

                }

            }

        catch (Exception e1) {

            e1.printStackTrace();

        finally {

            if (reader != null{

                try {

                    reader.close();

                catch (IOException e1) {

                }

            }

        }

    }

    

    public static void readFileByLines(String fileName) {

        File file = new File(fileName);

        BufferedReader reader = null;

        try {

            System.out.println(以行为单位读取文件内容,一次读一整行:);

            reader = new BufferedReader(new FileReader(file));

            String tempString = null;

            int line = 1;

            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null{

                // 显示行号
                System.out.println(line  + line +  + tempString);

                line++;

            }

            reader.close();

        catch (IOException e) {

            e.printStackTrace();

        finally {

            if (reader != null{

                try {

                    reader.close();

                catch (IOException e1) {

                }

            }

        }

    }

    

    public static void readFileByRandomAccess(String fileName) {

        RandomAccessFile randomFile = null;

        try {

            System.out.println(随机读取一段文件内容:);

            // 打开一个随机访问文件流,按只读方式
            randomFile = new RandomAccessFile(fileName, r);

            // 文件长度,字节数
            long fileLength = randomFile.length();

            // 读文件的起始位置
            int beginIndex = (fileLength > 4? 4 0;

            // 将读文件的开始位置移到beginIndex位置。
            randomFile.seek(beginIndex);

            byte[] bytes = new byte[10];

            int byteread = 0;

            // 一次读10个字节,如果文件内容不足10个字节,则读剩下的字节。

            // 将一次读取的字节数赋给byteread
            while ((byteread = randomFile.read(bytes)) != 1{

                System.out.write(bytes, 0byteread);

            }

        catch (IOException e) {

            e.printStackTrace();

        finally {

            if (randomFile != null{

                try {

                    randomFile.close();

                catch (IOException e1) {

                }

            }

        }

    }

    

    private static void showAvailableBytes(InputStream in) {

        try {

            System.out.println(当前字节输入流中的字节数为: + in.available());

        catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static void main(String[] args) {

        String fileName = C:/temp/newTemp.txt;

        ReadFromFile.readFileByBytes(fileName);

        ReadFromFile.readFileByChars(fileName);

        ReadFromFile.readFileByLines(fileName);

        ReadFromFile.readFileByRandomAccess(fileName);

    }

}

5、将内容追加到文件尾部

public class AppendToFile {

    

    public static void appendMethodA(String fileName, String content) {

        try {

            // 打开一个随机访问文件流,按读写方式
            RandomAccessFile randomFile = new RandomAccessFile(fileName, rw);

            // 文件长度,字节数
            long fileLength = randomFile.length();

            //将写文件指针移到文件尾。
            randomFile.seek(fileLength);

            randomFile.writeBytes(content);

            randomFile.close();

        catch (IOException e) {

            e.printStackTrace();

        }

    }

    

    public static void appendMethodB(String fileName, String content) {

        try {

            //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
            FileWriter writer = new FileWriter(fileName, true);

            writer.write(content);

            writer.close();

        catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static void main(String[] args) {

        String fileName = C:/temp/newTemp.txt;

        String content = new append!;

        //按方法A追加文件
        AppendToFile.appendMethodA(fileName, content);

        AppendToFile.appendMethodA(fileName, append end. \n);

        //显示文件内容
        ReadFromFile.readFileByLines(fileName);

        //按方法B追加文件
        AppendToFile.appendMethodB(fileName, content);

        AppendToFile.appendMethodB(fileName, append end. \n);

        //显示文件内容
        ReadFromFile.readFileByLines(fileName);

    }

}

 

增强J2ME的String能力——分割字符串(附源代码)

从JDK1.4以后,String类中新增了split方法来实现字符串的分割,但是在J2ME中却没有该方法(MIDP2.0中也没有实现),但是在实际使用过程中,有些时候的确要用到这种操作,这里将我以前实现的一段代码和大家共享,不足之处大家多提意见和建议:

 private static String[] split(String
original,String regex)
 {
  //取子串的起始位置
  int startIndex = 0;
  //将结果数据先放入Vector中
  Vector v = new Vector();
  //返回的结果字符串数组
  String[] str = null;
 
  //存储取子串时起始位置
  int index = 0;
  //获得匹配子串的位置
  startIndex = original.indexOf(regex);
 
  //System.out.println(“0” + startIndex);
 
  //如果起始字符串的位置小于字符串的长度,则证明没有取到字符串末尾。
  //-1代表取到了末尾
  while(startIndex <
original.length() && startIndex !=
-1)
  {
   String temp =
original.substring(index,startIndex);
 
  
System.out.println(”    
”  + startIndex);
 
   //取子串
   v.addElement(temp);
           
//设置取子串的起始位置
   index = startIndex +
regex.length();
   //获得匹配子串的位置
   startIndex =
original.indexOf(regex,startIndex + regex.length());
  }
  //取结束的子串
  v.addElement(original.substring(index + 1 –
regex.length()));
 
  //将Vector对象转换成数组
  str = new String[v.size()];
  for(int i=0;i<v.size();i++)
  {
   str[i] =
(String)v.elementAt(i);
  }
  //返回生成的数组
  return str;
}