当前位置:  编程技术>移动开发
本页文章导读:
    ▪JAVA汉语件操作大全        JAVA中文件操作大全   一.获得控制台用户输入的信息 /** *//**获得控制台用户输入的信息      * @return      * @throws IOException      */     public String getInputMessage() throws IOException...{    .........
    ▪ JAVA的bug        JAVA的bug? 在把向CDC1.1 prot kerberos的时候,遇到了一个问题。 在CDC1.0.1上运行良好的程序,产生了“server not found in kerberos database(7)” 错误。 找来找去,结果发现是在构造PrincipalName Object的.........
    ▪ 复建Wap Explorer 使之可以成为一个商业产品       重构Wap Explorer 使之可以成为一个商业产品? 项目的由来 去年10月份左右,个人开发了一个足球即时软件,在此构建的一个ui,加上一些解释wml的一些项目,决定把两者组合起来,开发一可用.........

[1]JAVA汉语件操作大全
    来源: 互联网  发布时间: 2014-02-18
JAVA中文件操作大全
 

一.获得控制台用户输入的信息

/** *//**获得控制台用户输入的信息
     * @return
     * @throws IOException
     */
    public String getInputMessage() throws IOException...{
        System.out.println("请输入您的命令∶");
        byte buffer[]=new byte[1024];
        int count=System.in.read(buffer);
        char[] ch=new char[count-2];//最后两位为结束符,删去不要
        for(int i=0;i<count-2;i++)
            ch=(char)buffer;
        String str=new String(ch);
        return str;
    }
可以返回用户输入的信息,不足之处在于不支持中文输入,有待进一步改进。

二.复制文件

1.以文件流的方式复制文件

/** *//**以文件流的方式复制文件
     * @param src 文件源目录
     * @param dest 文件目的目录
     * @throws IOException  
     */
    public void copyFile(String src,String dest) throws IOException...{
        FileInputStream in=new FileInputStream(src);
        File file=new File(dest);
        if(!file.exists())
            file.createNewFile();
        FileOutputStream out=new FileOutputStream(file);
        int c;
        byte buffer[]=new byte[1024];
        while((c=in.read(buffer))!=-1)...{
            for(int i=0;i<c;i++)
                out.write(buffer);        
        }
        in.close();
        out.close();
    }
该方法经过测试,支持中文处理,并且可以复制多种类型,比如txt,xml,jpg,doc等多种格式

三.写文件

1.利用PrintStream写文件

/** *//**
     * 文件输出示例
     */
    public void PrintStreamDemo()...{
        try ...{
            FileOutputStream out=new FileOutputStream("D:/test.txt");
            PrintStream p=new PrintStream(out);
            for(int i=0;i<10;i++)
                p.println("This is "+i+" line");
        } catch (FileNotFoundException e) ...{
            e.printStackTrace();
        }
    }
2.利用StringBuffer写文件

public void StringBufferDemo() throws IOException......{
        File file=new File("/root/sms.log");
        if(!file.exists())
            file.createNewFile();
        FileOutputStream out=new FileOutputStream(file,true);        
        for(int i=0;i<10000;i++)......{
            StringBuffer sb=new StringBuffer();
            sb.append("这是第"+i+"行:前面介绍的各种方法都不关用,为什么总是奇怪的问题 ");
            out.write(sb.toString().getBytes("utf-8"));
        }        
        out.close();
    }
该方法可以设定使用何种编码,有效解决中文问题。

四.文件重命名


    /** *//**文件重命名
     * @param path 文件目录
     * @param oldname  原来的文件名
     * @param newname 新文件名
     */
    public void renameFile(String path,String oldname,String newname)...{
        if(!oldname.equals(newname))...{//新的文件名和以前文件名不同时,才有必要进行重命名
            File oldfile=new File(path+"/"+oldname);
            File newfile=new File(path+"/"+newname);
            if(newfile.exists())//若在该目录下已经有一个文件和新文件名相同,则不允许重命名
                System.out.println(newname+"已经存在!");
            else...{
                oldfile.renameTo(newfile);
            }
        }         
    }五.转移文件目录


转移文件目录不等同于复制文件,复制文件是复制后两个目录都存在该文件,而转移文件目录则是转移后,只有新目录中存在该文件。

    /** *//**转移文件目录
     * @param filename 文件名
     * @param oldpath 旧目录
     * @param newpath 新目录
     * @param cover 若新目录下存在和转移文件具有相同文件名的文件时,是否覆盖新目录下文件,cover=true将会覆盖原文件,否则不操作
     */
    public void changeDirectory(String filename,String oldpath,String newpath,boolean cover)...{
        if(!oldpath.equals(newpath))...{
            File oldfile=new File(oldpath+"/"+filename);
            File newfile=new File(newpath+"/"+filename);
            if(newfile.exists())...{//若在待转移目录下,已经存在待转移文件
                if(cover)//覆盖
                    oldfile.renameTo(newfile);
                else
                    System.out.println("在新目录下已经存在:"+filename);
            }
            else...{
                oldfile.renameTo(newfile);
            }
        }      
    }



六.读文件

1.利用FileInputStream读取文件


    /** *//**读文件
     * @param path
     * @return
     * @throws IOException
     */
    public String FileInputStreamDemo(String path) throws IOException...{
        File file=new File(path);
        if(!file.exists()||file.isDirectory())
            throw new FileNotFoundException();
        FileInputStream fis=new FileInputStream(file);
        byte[] buf = new byte[1024];
        StringBuffer sb=new StringBuffer();
        while((fis.read(buf))!=-1)...{
            sb.append(new String(buf));   
            buf=new byte[1024];//重新生成,避免和上次读取的数据重复
        }
        return sb.toString();
    }


2.利用BufferedReader读取

在IO操作,利用BufferedReader和BufferedWriter效率会更高一点

    /** *//**读文件
     * @param path
     * @return
     * @throws IOException
     */
    public String BufferedReaderDemo(String path) throws IOException...{
        File file=new File(path);
        if(!file.exists()||file.isDirectory())
            throw new FileNotFoundException();
        BufferedReader br=new BufferedReader(new FileReader(file));
        String temp=null;
        StringBuffer sb=new StringBuffer();
        temp=br.readLine();
        while(temp!=null)...{
            sb.append(temp+" ");
            temp=br.readLine();
        }
        return sb.toString();
    }


3.利用dom4j读取xml文件

    /** *//**从目录中读取xml文件
     * @param path 文件目录
     * @return
     * @throws DocumentException
     * @throws IOException
     */
    public Document readXml(String path) throws DocumentException, IOException...{
        File file=new File(path);
        BufferedReader bufferedreader = new BufferedReader(new FileReader(file));
        SAXReader saxreader = new SAXReader();
        Document document = (Document)saxreader.read(bufferedreader);
        bufferedreader.close();
        return document;
    }


七.创建文件(文件夹)

1.创建文件夹  /** *//**创建文件夹
     * @param path  目录
     */
    public void createDir(String path)...{
        File dir=new File(path);
        if(!dir.exists())
            dir.mkdir();
    }
2.创建新文件 /** *//**创建新文件
     * @param path 目录
     * @param filename 文件名
     * @throws IOException
     */
    public void createFile(String path,String filename) throws IOException...{
        File file=new File(path+"/"+filename);
        if(!file.exists())
            file.createNewFile();
    }
八.删除文件(目录)

1.删除文件     /** *//**删除文件
     * @param path 目录
     * @param filename 文件名
     */
    public void delFile(String path,String filename)...{
        File file=new File(path+"/"+filename);
        if(file.exists()&&file.isFile())
            file.delete();
    }
2.删除目录
要利用File类的delete()方法删除目录时,必须保证该目录下没有文件或者子目录,否则删除失败,因此在实际应用中,我们要删除目录,必须利用递归删除该目录下的所有子目录和文件,然后再删除该目录。  /** *//**递归删除文件夹
     * @param path
     */
    public void delDir(String path)...{
        File dir=new File(path);
        if(dir.exists())...{
            File[] tmp=dir.listFiles();
            for(int i=0;i<tmp.length;i++)...{
                if(tmp.isDirectory())...{
                    delDir(path+"/"+tmp.getName());
                }
                else...{
                    tmp.delete();
                }
            }
            dir.delete();
        }
    }<o:p></o:p>

<o:p> </o:p>

1 楼 ddandyy 2007-05-16  
如果字体字号不是这么难看的话或许还值得一看

    
[2] JAVA的bug
    来源: 互联网  发布时间: 2014-02-18
JAVA的bug?
在把向CDC1.1 prot kerberos的时候,遇到了一个问题。
在CDC1.0.1上运行良好的程序,产生了“server not found in kerberos database(7)” 错误。

找来找去,结果发现是在构造PrincipalName Object的时候,有如下一段代码:(Kerberos V5的SUN实现,源码对外不开放)
if (nameParts.length >= 2) {
    try {
        String hostName = (InetAddress.getByName(nameParts[1])).getCanonicalHostName();
    } catch (UnknownHostException e) {
        // no canonicalization, just convert to lowercase
        nameParts[1] = nameParts[1].toLowerCase();
    }
}
注意其中resolve hostname的方法,是通过调用InetAddress.getCanonicalHostName()来实现的。
在CDC1.0.1的kerberos中,因为没有这个方法,所以用getHostname来代替的。

Canonicalize是指“最简化”,就是数学中将一个表达式化为其最简形式的意思。

好了,回头再来看我们的kerberos。
RFC 1510和1964,对principalName的命名方法作了规定。简单来说,就是principal name由两部分组成:
service@hostname

RFC 1964的描述如下:
"When a reference to a name of this type is resolved, the "hostname" is canonicalized by attempting a DNS lookup and using the fully-qualified domain name which is returned, or by using the "hostname" as provided if the DNS lookup fails.  The canonicalization operation also maps the host's name into lower-case characters."

可是参看InetAddress.getCanonicalHostName()的API doc我们就发现问题了。该方法在解析失败后,返回的是IP地址,而不是“the 'hostname' as provided” -- 也就是InetAddress构造是所用的hostname。

这就导致了开始所说的错误。用户输入的是FQDN,而因某种原因,DNS解析失败后,principal name中的hostname却变成了IP address,这样的principal name当然在kerberos database中找不到了。

那么这是谁的bug?
InetAddress中getCanonocialHostName()的方法实现有问题?
RFC 1964要求canonicalize hostname,并说明了如何做,不过getCanonocialHostName()方法明显是不满足要求的,虽然挂了个canonical的名。当然了,这个方法不是仅在Kerberos的实现中使用,所以也不能说这个实现就不合规矩。

那么是Kerberos实现的错咯?
找了SUN的bugs database,没有找到相关的bugs报告。

我手头有的SUN实现的Kerberos,版本只到JDK1.5.0,不知道以后的版本中是不是修复了这个问题?
1 楼 tetsu.soh 2007-04-12  
没有朋友在做Kerberos的项目么?谁有1.5.0以后的SUN实现的kerberos源码?帮忙check以下吧
2 楼 tetsu.soh 2007-04-17  
今天在1G的一个同事的提示下,测试了如下一个程序. 改变Windows的“%system%drivers\etc\host”文件中对测试IP地址(133.139.22.35)的解析,结果也随之改变。
这是当然的。
try {
        InetAddress add = InetAddress.getByName("133.139.22.35");
        System.out.println("Canonical HostName: " + add.getCanonicalHostName());
} catch (UnknownHostException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
}

但是如果做如下设定:
133.139.22.35   noah.spf.ricoh.co.jp   #domain name
133.139.22.35   noah-server.noah.spf.ricoh.co.jp    #host name

然后测试用hostname来测试,也就是
InetAddress.getByName("noah-server.noah.spf.ricoh.co.jp ");

返回的结果却是noah.spf.ricoh.co.jp (domain name!!!)

可见,getCanonicalHostName其实就是从本地的解析文件中顺序寻找IP地址的解析,如果找到了,就返回值(而不管这个值是什么)
如果找不到,就返回IP address。

这个实现是不是正确呢?
Java doc对这个方法的说明是“Gets the fully qualified domain name for this IP address. ”
对这个方法有两个疑问:
1。 这个FQDN是否应该经过确认?SUN的实现,是用SecurityManage.checkConnect方法,但是如果没有指定SecurityManager的话,就不测试。
其结果是,如果在host文件中,做如下修改:
133.139.22.35   xxxx.xxxx.xxxx   #whatever you like
133.139.22.35   noah.spf.ricoh.co.jp   #domain name
133.139.22.35   noah-server.noah.spf.ricoh.co.jp    #host name

那么上面的测试返回的结果就是“xxxx.xxxx.xxxx”了!

2。 Kerberos 的 principalname = service@hostname
但是在解析hostname的时候,JDK1.4后,使用了getCanonicalHostName()方法,按照API docs,这个方法返回的是FQDN,也就是Domain Name, 而不是Host Name。
这明显是不合理的。

Kerberos的这个实现问题已经通过公司提交给SUN了,目前还没有回复。等待中....

    
[3] 复建Wap Explorer 使之可以成为一个商业产品
    来源: 互联网  发布时间: 2014-02-18
重构Wap Explorer 使之可以成为一个商业产品?
项目的由来

去年10月份左右,个人开发了一个足球即时软件,在此构建的一个ui,加上一些解释wml的一些项目,决定把两者组合起来,开发一可用的浏览器,--- 这就是最此的想法。

经过大概一个月左右时间实现了下,然后发布出来,但这个浏览器还不是一个可用的东西。

这个就是为什么有这个开发日志的由来,我想再接下来的时间里,对它进行二次开发,进行重构。

这篇文章开始的名字是:
重温Wap Explorer之主页从wml构建
想来没碰j2me也有好几个月了,很是想念它,所以就动用了这几天的时间来重新构建一个主页出来,以前Wap Explorer的主页完全是构建一个class,然后在这个class里面添加那些控件显示出来的,
这几天我也不停的重构wml解释引擎,跟wap UI部件,昨天终于把主页重构完毕,发个帖出来,让大家欣赏下。也算是报答各个网友的关心。

现在我把文章的名字变了下,改成重构Wap Explorer 使之可以成为一个商业产品?,之所以加个?号,是因为一个成熟的商业产品并不是想像的那么简单。
不过有一点是可以肯定的,那就是每天不断的重构,久了,一些东西就会显现出来,很多不明朗跟不明白的东西都会跑出来,这是一件很有趣的事情。
以后我会以开发日志的形式更新这个帖子,以后的日志就不写到这里了,直接跟帖,有兴趣的朋友可以在这里讨论,砸砖。
我很希望看到这样的情况发生
先看看图片,
然后再看看那些主页跟帮助的wml










Wml代码:

主页xml 代码
  • xml version="1.0"?>
  • >
  • <wml>
  • <card id="index" title="饶荣庆">
  • <p align="center"><BIG color="d4df">爬虫工作室<!---->BIG><!---->p>
  • <p align="center"><a href="http://wap.3g.net.cn/"> 3g <!---->a><!---->p>
  • <p align="center"><a href="http://wap.wapcn.net/"> [WAP中国]<!---->a><!---->p>
  • <p align="center"><a href="http://wap.kongzhong.com"> 空中网<!---->a><!---->p>
  • <p align="center"><a href="http://wap.dwap.cn/">Wap帝国<!---->a><!---->p>
  • <p align="center"><a href="http://wap.bazhang.com"> 巴掌<!---->a><!---->p>
  • 此浏览器是我个人一个比较完整的作品,<br/>
  • 为此我花了很多心血啊,主要是用来交流之用,<br/>
  • 需要交流的朋友跟我联系,<br/>
  • 我的qq是43686904 <br/>
  • 还有很多需要完善的地方<br/>
  • <a href="local://help.wml">》帮助<!---->a>
  • <!---->card> <!---->wml>
  •  

    xml 代码
  • xml version="1.0"?>
  • >
  • <wml>
  • <card id="index" title="帮助">
  • <p align="center"><BIG color="d4df">帮助<!---->BIG><!---->p>
  • 这个浏览器的功能简单,实用,个人很喜欢他,推荐给大家<br/>
  • 为此我花了很多心血啊,主要是用来交流之用,<br/>
  • 需要交流的朋友跟我联系,<br/>
  • 我的qq是<u color="DDFF">43686904<!---->u> <br/>
  • 我的电话是:<a href="wtai://wp/mc;13588888888">13588888888<!---->a><br/>
  • 还有很多需要完善的地方<br/>
  • <a href="local://main.wml">》返回上一级<!---->a>
  • <!---->card> <!---->wml>

  • 以后的一些文章我将会解释我是怎么样进行重构的,重构的过程是很快乐的。哈

    1 楼 orientalsun 2007-05-21  
    给老大发了信就加我了

    效率真高啊

    以后要多请教了

    呵呵
    2 楼 wuhua 2007-05-22  
    继续帖些图出来<br/>
    <img src='/upload/picture/pic/3455/c6cc7efa-45ae-49f6-b9cc-90440c7e1a30.jpg' alt=''/><br/>
    <br/>
    这个是今天完善了一个下载wml跟解释wml的进度条,在顶部黄色的那个部分。<br/>
    <img src='/upload/picture/pic/3456/b7ef2d33-6e7a-48cc-84c3-5b8836fbff09.jpg' alt=''/>
    3 楼 Puras 2007-05-22  
    看了这个
    燃起了我对J2ME的兴趣
    4 楼 wuhua 2007-05-23  
    继续贴图<br/>
    下面是打开wap中国网站的截图<br/>
    <img src='/upload/picture/pic/3454/abe40160-97d9-46d1-b7cb-8f030d1fb0fc.jpg' alt=''/><br/>
    <br/>
    <img src='/upload/picture/pic/3453/5ca04a58-7d50-46c9-8c9e-34703f94f27d.jpg' alt=''/><br/>
    <br/>
    这个是3G门户图片<br/>
    <img src='/upload/picture/pic/3483/565d54ea-c61f-41a6-b421-2159ff0e7aa0.jpg' alt=''/><br/>
    <br/>
    图片发来发去就是这些,程序开发的工作也还没有结束,但把程序开发好了,并运行一段时间没有内存溢出的时候,再让大家玩下。哈
    5 楼 wuhua 2007-05-23  
    由于word黏贴到这里有问题,<br/>
    所以看下一帖
    6 楼 wuhua 2007-05-23  
    项目开发日志
    5月23日,
    1. 昨天运行软件的时候,发现出现了很多问题,1,wml解释慢了点,2,打开一些异常的url会出现程序崩溃,3,软件运行久了就会出现内存溢出。
    2. 今天重点解决的是wml解释引擎优化,网络下载优化等
    3. 恩。
    对了。你有没有研究http下载速度问题
    比如你获取input然后,读取长度,然后在对长度进行分割,同时启动线程对那些分割进行下载,这样速度会快很多
    4. 不过如果设计的好的话,同时启动2个线程去读取数据到是可以的,特别是读取图片的时候,一定要同时开启2个线程去读取,不然的话,慢啊
    5. 关闭所有日志输出可以快很多。比如我打开日志输出输掉是解释一个比较大的wml是2秒,关闭的话0.8秒左右(不过这个日志的输出,量比较大)
    6. 在采用kxml解释引擎的时候,发现kxml下载网络数据的时候,会丢失数据包,所以解释的时候,wml变了形状,甚至是出现异常情况,导致程序崩溃,所以今天要解决的问题是自己实现下载机制,并采用多线程的技术进行下载。
    7.

    5月22日,
    8. 今天重点重构一个下载进度条,但是这个下载进度条要人性化一点。怎么做了,上网去找下有没有这方面的资料
    9. 下载进度条搞定,不过,很可惜,设计的不怎么好看。这个问题也解决了,进度条也好看多了

    10. 开始设计Cokie跟缓存功能,设计初期就遇到了困难,出现cache死锁问题。
    超链接支持打电话的功能了
    5月21日,
    11. 继续修正了一些bug,给字体的标签进行解释。
    12. 今天给字体加了个解释颜色的功能,比如标记<big color=”fff”>Fox</big>就可以实现不同样式的字体了。哈
    13. 实现了一个打电话的功能,发短信,发彩信的功能
    14. 写了一个help的wml跟main.wml哈哈,我可以成功的解释这些wml,
    15. 还没实现的功能有input,selectOption跟img等标记
    16. 重构了一个关于退出事件的方式,决定采用时间链的形式,给一个class传入一个事件代码
    17. 超链接支持打电话的功能了

    5月20日,
    18. 今天重构了WapPage的设计,虽然主页不够完美,比如有些标记支持的不好,但是这个是kxml解释引擎的事情,还有一个解决了问题是可以支持,用户查看状态的问题了,还差一个下载状态的UI,不过应该很简单。
    19. 重构了MainPage的设计,设计成从wml文件中读取数据然后显示出来
    20. 整天想这些东西真的很烦恼
    5月19日,
    1. 今天是礼拜6,我很开心,昨天晚上回到家,搞定了WapPage的一些重构,不过还差很多,比如关于浏览下拉页面的时候,一个状态条表示,用户的动作,下载进度条。等等,今天重点是重构下下来进度状态跟用户事件的完善。
    2. 继前几天搞定Kxml解释wap出错的bug后,昨天晚上有对kxml解释引擎进行了
    的重构,使之能解释更多的wml标记,并绘制出来。
    3. 今天修改了日志输出方式。这样更易于调试。
    4. 今天下午陪女朋友去逛了下街,广州今天下雨,回来把一些想好了,但确未能实践的做了下,感觉还不错,WapPage重构的差不多了,Kxml解释引擎也差不多了。现在忙于下载那些wml文件进行本地调试,还出差一个下载进度条,本想做一个ajax常用的进度的,不过苦于没有gif图片分割,而我又对gif不熟悉。哈
    5. 功能修正了许多。
    5月18日,
    6. 今天的任务是重点重构UI,要求是,每个UI都能记住自己的位置
    7. 重点重构WapPage这个UI,使之可以管理其他UI部件
    5月16日,
    1. 发现了kxml解释引擎在解释wml时候的一个bug,详细看源代码
    2. 重构了StringPart UI组件,使之可以自动换行。这个功能已经重构完毕
    3. 重构WapPage部件,这个部件很关键,是把所有的Part UI组装起来,所以说这个部件也是所有Part UI的Manage,设计的好,可以很容易做好统一管理,事件处理,资源释放跟绘制管理等
    4. 发现了一个很严重的bug,为什么我用kxml解释wml的时候,会对一个tag重复的解释两次呢。找到问题的所在了,这个并不是kxml的bug,而是自己的疏忽,把函数放错了位置。现在问题解决了
    7 楼 剑事 2007-05-23  
    你那WAP 业务还很好?
    8 楼 wuhua 2007-05-23  
    剑 事 写道
    你那WAP 业务还很好?

    怎么问起这个来了。
    现在wap普遍是寒动冬
    9 楼 剑事 2007-05-23  
    一个是手机浏览器越来越强*html了
    一个是wap面临两大运营流氓。

    所有有点奇怪 呵呵
    10 楼 janla 2007-05-23  
    看了.搂主得代码。写得比较乱。确实应该重构。
    11 楼 wuhua 2007-05-24  
    剑 事 写道
    一个是手机浏览器越来越强*html了
    一个是wap面临两大运营流氓。

    所有有点奇怪 呵呵

    看的出楼主好像对wap很悲观啊。
    现在Wap不是也出了个2.0吗,表现形式也很丰富了,可以直接支持css,xhtml等。手机这块还是很有作为的
    12 楼 Norther 2007-05-24  
    我估计再过1年大部分浏览器都可以支持HTML,WML只是个过渡技术,快到头了
    13 楼 wuhua 2007-05-24  
    Norther 写道
    我估计再过1年大部分浏览器都可以支持HTML,WML只是个过渡技术,快到头了

    是啊,不过我想,手机浏览器支持是肯定的,不过大部分站点还是采用wml的形式。
    14 楼 剑事 2007-05-24  
    手机的无线如果能绕过 联通移动
    手机站点会发展的更好
    15 楼 wuhua 2007-05-24  
    剑 事 写道
    手机的无线如果能绕过 联通移动
    手机站点会发展的更好

    目前来讲不显示,
    因为人家投入了大量的钱去搞基础建设,不捞点,对不住自己。
    16 楼 wuhua 2007-05-25  
    项目开发日志<br/>
    5月24日,<br/>
    1.    今天还是重点优化下性能问题,发现怎么重构,性能都是那样的,现在解决的方法放到了电脑上IE的常用解决办法,就是有多少就绘制多少,而不是让程序去把所有UI都绘制好了,在显示出来。在构建一个Wapage页面build的时候也是会出现程序运行速度慢的问题。<br/>
    2.    这里终于找到了解释慢的原因,其实并不是wml解释引擎慢,只是因为在解释的过程中一边下载网络数据,所以慢了点,不过对于手机来说,问题的瓶颈就在于绘制UI跟创建UI的速度上了<br/>
    3.    关于假设如果先绘制出40个控件的话,也会出现一个问题那就是时间响应比较慢<br/>
    4.    关于内存溢出一直没有找到解决办法,不知道Runtime.getRuntime().freeMemory();这个方法有没有用<br/>
    5.    重构Http的相关类<br/>
    6.    关于编码问题,因为你获取到InputStream读取出来的是乱码,你应该构造一个InputS
    17 楼 zykun 2007-07-17  
    关注一下!对这个很感兴趣
    楼主还在广州上班吗
    18 楼 超级莱鸟 2007-09-12  
    最近我也想搞一个wap浏览器,wuhua兄弟,我们可以研究一下啊。

    现在有一个UCWEB好像不错啊,争取整一个超过他们.
    19 楼 iamnxh 2008-04-24  
    是不是现在显示不了图片呀

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3