素材网 素材网
  • java查询判断外网地址是否为死链

    代码作用:

        因网站改变导致出现大量404错误页面,百度收录404页面数据有时候带有正确的网站地址,这样导致百度不能有效的处理404错误页面,所有我们要过滤的排查所有百度提供的404错误页面是否正确。


    第一步:准备一个txt文件,里面每行放入一条链接地址

    如图:


    第二步:


    首先读取txt文件里面每行的内容

     /** 
         * 以行为单位读取文件,常用于读面向行的格式化文件 
         */  
        public static void readFileByLines(String fileName) {  
        	Test2 read=new Test2();
            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) {  
                    // 显示行号  
                    
                    String getRrl=read.ifURL(tempString);
                    //System.out.println("返回值:"+getRrl);
                    if(getRrl.equals("200"))
                    {
                    	System.out.println("line " + line + ": " + tempString+"==========【200】");  
                    }else
                    {
                    	System.out.print(line+" | ");
                    }
                    line++;  
                }  
                reader.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            } finally {  
                if (reader != null) {  
                    try {  
                        reader.close();  
                    } catch (IOException e1) {  
                    }  
                }  
            }  
        }

    再次:读取到每条路径以后检查返回值为:400或200或301等状态

     public String ifURL(String url)
       {
    	   String backValue="";
    		//System.out.println("=========开始解析===============");
    		try {  
                URL u = new URL("http://"+url);  
               // boolean connect=false;
                try {  
                    HttpURLConnection uConnection = (HttpURLConnection) u.openConnection();  
                    try {  
                        uConnection.connect();  
                        backValue=uConnection.getResponseCode()+"";
                       // System.out.println("返回值:"+uConnection.getResponseCode());  
                       // connect = true;  
                       
                    } catch (Exception e) {  
                        //connect = false;  
                        e.printStackTrace();  
                       // System.out.println("connect failed");  
                    }  
                      
                } catch (IOException e) {  
                    //System.out.println("出现异常");  
                    backValue="==出现异常===";
                   // e.printStackTrace();  
                }  
                  
            } catch (MalformedURLException e) {  
                //System.out.println(""); 
                backValue="==这个是图片路径!===";
               // e.printStackTrace();  
            }  
    		return backValue;
       }

    最后:调用Main函数开始执行检查吧。

    public static void main(String args[]) throws IOException {
        readFileByLines("D:/baidu.txt");    
    }


    此类引用的包:

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;


     
  • 今天无意中看到一篇关于Java实现分页代码【下】

    接住上篇的继续


    看这里我们引入了jstl.jar standard.jar sqljdbc.jar pagination.jar四个jar包 缺一不可奥。

    下面我们创建一个实体类,代码如下: 

    public class UserInfo {  
        private int userID;  
        private String userName;  
        private String userPassword;  
     public int getUserID() {  
      return userID;  
     }  
     public void setUserID(int userID) {  
      this.userID = userID;  
     }  
     public String getUserName() {  
      return userName;  
     }  
     public void setUserName(String userName) {  
      this.userName = userName;  
     }  
     public String getUserPassword() {  
      return userPassword;  
     }  
     public void setUserPassword(String userPassword) {  
      this.userPassword = userPassword;  
     }  
         
    }

    实体类我们创建完毕,现在我们创建servlet:

    import java.io.IOException;  
    import java.util.ArrayList;  
    import java.util.List;  
    import javax.servlet.ServletException;  
    import javax.servlet.http.HttpServlet;  
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpServletResponse;  
    import com.ant.util.Call;  
    import com.ant.util.Pagination;  
    import com.xuyesheng.entity.UserInfo;  
    public class PageServlet extends HttpServlet {  
       
     public void doGet(HttpServletRequest request, HttpServletResponse response)  
       throws ServletException, IOException {  
      this.doPost(request, response);  
     }  
     public void doPost(HttpServletRequest request, HttpServletResponse response)  
       throws ServletException, IOException {  
      //取得jsp页面传递来的页数,参数名 index 不可更改  
      String index = request.getParameter("index");  
      int num = 0;  
      if (index == null) {  
       num = 1;  
      } else {  
       num = Integer.parseInt(index);  
      }  
      //创建封装数据类的对象 call  
      Call call = new Call();  
      //创建数组存储 存储过程的参数  
      Object obj[] = { "userInfo", "*", "userID", 5, num+"", 0+"", 0+"" };  
      //调用执行存储过程的方法  
      List li = call.execProcedure(  
        "com.microsoft.sqlserver.jdbc.SQLServerDriver",  
        "jdbc:sqlserver://localhost:1433;databaseName=pagination",  
        "sa", "as", obj, UserInfo.class);  
      //保存用户名  
      List<String> list = new ArrayList<String>();  
      //便利集合  
      for (int i = 0; i < li.size(); i++) {  
       UserInfo ui = (UserInfo) li.get(i);  
       list.add(ui.getUserName());  
       list.add(ui.getUserPassword());  
      }  
      //创建 分页对象  
      Pagination p = new Pagination();  
      //设置页数  
      p.setIndex(num);  
      //设置页大小  
      p.setPageSize(Integer.parseInt(obj[3].toString()));  
      //设置总共的条数  
      p.setTotle(call.getTotle());  
      //设置数据  
      p.setData(list);  
      //跳转的路径  
      p.setPath("page.do?");  
      request.setAttribute("page", p);  
      request.getRequestDispatcher("index.jsp").forward(request, response);  
     }  
    }

    到这里我们就差一个页面了:

    页面代码如下: 

    <%@ page language="java"  pageEncoding="GBK"%>  
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
    <html>  
      <head>  
        <title>java通用分页显示数据</title>  
      </head>  
      <body>  
     <table width="507" height="160" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#999900">  
             <tr>  
               <td  height="40" align="center" valign="middle" bgcolor="#FF9999"><h2>许业生用java实现通用分页功能</h2></td>  
             </tr>  
             <tr>  
               <td  height="35" align="center" valign="middle" bgcolor="#FF9999"><h3>用户名</h3></td>  
               
             </tr>  
              <c:forEach items="${requestScope.page.data}" var="li" >  
             <tr>  
               <td height="35" align="center" valign="middle" bgcolor="#CC99CC" >  
          <c:out value="${li}"/>  
        </td>  
             </tr>  
             </c:forEach>  
             <tr>  
               <td height="40"  align="center" valign="middle" ><c:out value="${requestScope.page.pageDisplay}" escapeXml="false"/></td>  
             </tr>  
           </table>  
      </body>  
    </html>

    其中web.xml文件中的servlet的路径配置如下:

     <?xml version="1.0" encoding="UTF-8"?>  
    <web-app version="2.4"  
     xmlns="http://java.sun.com/xml/ns/j2ee"  
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
      <servlet>  
        <description>通用分页Servlet</description>  
        <servlet-name>PageServlet</servlet-name>  
        <servlet-class>com.xuyesheng.servlet.PageServlet</servlet-class>  
      </servlet>  
      <servlet-mapping>  
        <servlet-name>PageServlet</servlet-name>  
        <url-pattern>/page.do</url-pattern>  
      </servlet-mapping>  
      <welcome-file-list>  
        <welcome-file>index.jsp</welcome-file>  
      </welcome-file-list>  
    </web-app>

    然后我们将刚才的三个.java文件打成JAR包,下次我们用的时候直接导入这个jar包就行了。

     
  • 今天无意中看到一篇关于Java实现分页代码【上】

    一. 要分页我们必须要有数据库,所以我们先准备下数据库,其数据库脚步如下:

    --以下是创建数据库和数据库表以及向数据库插入数据  use master  

    Go  
    if exists(select * from sysdatabases where name='pagination')  
    drop database pagination  
    Go  
    create database pagination  
    Go  
    use pagination  
    Go  
    create table userInfo (  
        [userID] int identity(1,1) primary key not null,  
        [userName] nvarchar(50) not null,  
        [userPassword] nvarchar(50) not null,  
    )  
    Go  
    insert userInfo  values('xuyesheng','8888')  
    insert userInfo  values('jiaojiao','8888')  
    insert userInfo  values('administrator','888')  
    insert userInfo  values('xuyesheng1','123')  
    insert userInfo  values('xuyesheng2','123')  
    insert userInfo  values('xuyesheng3','123')  
    insert userInfo  values('xuyesheng4','123')  
    insert userInfo  values('xuyesheng5','123')  
    insert userInfo  values('xuyesheng6','123')  
    Go  
    select * from userInfo

    二: 通用分页的存储过程,如下:

        ---------------创建存储过程--------------  
        Go  
        set ANSI_NULLS ON  
        set QUOTED_IDENTIFIER ON  
        go  
        ------------------------------------  
        --  
        --用途:用于需要分页显示的数据  
        --时间:2009年08月22日  
        --描述:通用的存储过程分页程序  
        --  
        -------------------------------------  

        create PROCEDURE [dbo].[GetData]  
        @tblName varchar(255), -- 表名  
        @fldName varchar(255), -- 字段名  
        @OrderfldName varchar(255), -- 排序字段名  
        @PageSize int = 10, -- 页尺寸  
        @PageIndex int = 1, -- 页码  
        @IsCount bit = 0, -- 返回记录总数, 非 0 值则返回  
        @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序  
        @strWhere varchar(1000) = '' -- 查询条件 (注意: 不要加 where)  
        AS  
        declare @strSQL varchar(6000) -- 主语句  
        declare @strTmp varchar(500) -- 临时变量  
        declare @strOrder varchar(400) -- 排序类型  
        if @OrderType != 0  
        begin  
          set @strTmp = '<(select min'  
          set @strOrder = ' order by [' + @OrderfldName +'] desc'  
        end  
        else  
        begin  
          set @strTmp = '>(select max'  
          set @strOrder = ' order by [' + @OrderfldName +'] asc'  
        end  
          set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['  
          + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '(['  
          + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['  
          + @OrderfldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'  
          + @strOrder  
          if @strWhere != ''  
          set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['  
          + @tblName + '] where [' + @OrderfldName + ']' + @strTmp + '(['  
          + @OrderfldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['  
          + @OrderfldName + '] from [' + @tblName + '] where ' + @strWhere + ' '  
          + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder  
          if @PageIndex = 1  
          begin  
           set @strTmp = ''  
           if @strWhere != ''  
              set @strTmp = ' where ' + @strWhere  
              set @strSQL = 'select top ' + str(@PageSize) + ' ' + @fldName + ' from ['  
              + @tblName + ']' + @strTmp + ' ' + @strOrder  
          end  
          if @IsCount != 0  
          begin  
               if @strWhere != ''  
                set @strSQL = 'select count(' + @OrderfldName + ') as Total from [' + @tblName + ']'+ ' where ' + @strWhere    
                else  
                set @strSQL = 'select count(' + @OrderfldName + ') as Total from [' + @tblName + ']'      
          end  
        exec (@strSQL)

        --测试下  
        Go  
        ----参数说明exec [GetData] '表明','查找的列名* 表示查找所有信息','主键',页大小,第几页,非  
        --表示返回记录数,[排序类型,非则降序排列],条件  
        --得到分页的数据  
        exec [GetData] 'userInfo','*','userID',5,1,0,0,null  
        --得到总共的条数  
        exec [GetData] 'userInfo','*','userID',5,1,1,0,null  
        --根据条件查询  
        exec [GetData] 'userInfo','*','userID',5,1,0,0,' userID like ''%2%'' '

    存储过程我们有了我们只要给一下几个参数就OK了

    @tblName varchar  -- 表名
    @fldName varchar  -- 字段名
    @OrderfldName     -- 排序字段名
    @PageSize int     -- 页尺寸
    @PageIndex int    -- 页码
    @IsCount bit      -- 返回记录总数, 非 0 值则返回
    @OrderType bit    -- 设置排序类型, 非 0 值则降序
    @strWhere varchar -- 查询条件 (注意: 不要加 where)


    三 通用包

    到这里我们先不用急,先将一下三个Java类(Pagination.java Call.java AutoSetData.java)封装一下,然后打成JAR包,以后我们直接导入JAR包即可

    Pagination.java

    存储过程我们有了我们只要给一下几个参数就OK了

    @tblName varchar  -- 表名
    @fldName varchar  -- 字段名
    @OrderfldName     -- 排序字段名
    @PageSize int     -- 页尺寸
    @PageIndex int    -- 页码
    @IsCount bit      -- 返回记录总数, 非 0 值则返回
    @OrderType bit    -- 设置排序类型, 非 0 值则降序
    @strWhere varchar -- 查询条件 (注意: 不要加 where)

    到这里我们先不用急,先将一下三个Java类(Pagination.java Call.java AutoSetData.java)封装一下,然后打成JAR包,以后我们直接导入JAR包即可

    Pagination.java

    import java.util.List;  
    public class Pagination {  
        // 总共的数据量  
        private int totle;  
        // 每页显示多少条  
        private int pageSize;  
        // 共有多少页  
        private int totlePage;  
        // 当前是第几页  
        private int index;  
        // 数据  
        private List data;  
        // 连接路径  
        private String path;  
        public void setTotle(int totle) {  
            this.totle = totle;  
        }  
        public void setPageSize(int pageSize) {  
            this.pageSize = pageSize;  
        }  
        public void setIndex(int index) {  
            this.index = index;  
        }  
        public void setPath(String path) {  
            this.path = path;  
        }  
        public int getTotle() {  
            return totle;  
        }  
        public int getPageSize() {  
            return pageSize;  
        }  
        public int getTotlePage() {  
            return (this.totle + this.pageSize - 1) / this.pageSize;  
        }  
        public int getIndex() {  
            return index;  
        }  
        public List getData() {  
            return data;  
        }  
        public void setData(List data) {  
            this.data = data;  
        }  
        public String getPageDisplay() {  
            StringBuffer displayInfo = new StringBuffer();  
            if (index == 0 || pageSize == 0) {  
                displayInfo.append("没有分页的信息!");  
            } else {  
                displayInfo.append("<div class='pager'>");  
                displayInfo.append("共" + totle + "条记录每页<span style="color:#FF0000" mce_style="color:#FF0000">" + pageSize  
                        + "</span>条");  
                displayInfo.append("第<span style="color:#FF0000" mce_style="color:#FF0000">" + index  
                        + "</span>页/共"  
                        + this.getTotlePage() + "页");  
                // 判断如果当前是第一页 则“首页”和“第一页”失去链接  
                if (index == 1) {  
                    displayInfo.append("  首页 ");  
                    displayInfo.append("上一页 ");  
                } else {  
                    displayInfo.append("  <a href="" + path  
                            + "index=1" mce_href="" + path  
                            + "index=1">首页</a> ");  
                    displayInfo.append("<a href="" + path + "index=" + (index - 1)  
                            + "" mce_href="" + path + "index=" + (index - 1)  
                            + "">上一页</a> ");  
                }  
                if (index >= this.getTotlePage()) {  
                    displayInfo.append("下一页 ");  
                    displayInfo.append("最后一页 ");  
                } else {  
                    displayInfo.append("<a href="" + path + "index=" + (index + 1)  
                            + "" mce_href="" + path + "index=" + (index + 1)  
                            + "">下一页</a> ");  
                    displayInfo.append("<a href="" + path + "index="  
                            + this.getTotlePage() + "" mce_href="" + path + "index="  
                            + this.getTotlePage() + "">最后一页</a> ");  
                }  
                displayInfo.append("</div>");  
            }  
            return displayInfo.toString();  
        }  
    }

    Pagination.java文件源码我们有了,下面的是Call.java类的源码:

    Call.java

    import java.sql.Connection;  
    import java.sql.DriverManager;  
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
    import java.util.ArrayList;  
    import java.util.Collection;  
    import java.util.Iterator;  
    import java.util.List;  
    public class Call {  
        private AutoSetData auto = new AutoSetData();  
         
        public List execProcedure(String driver, String url, String userName,  
                String pwd, Object[] ob, Class c) {  
            try {  
                Class.forName(driver);  
                Connection conn = DriverManager.getConnection(url, userName, pwd);  
                String sql = "exec GetData ?,?,?,?,?,?,?,null";  
                List list = new ArrayList();  
                // Ltest是我测试用类,实际操作请注入相关对象,支持set,get,is,read,writer为前缀数据对,更多请继续添加。  
                Collection collection = auto.get(conn, c.newInstance().getClass(),  
                        sql, ob);  
                for (Iterator it = collection.iterator(); it.hasNext();) {  
                    Object obj = c.newInstance();  
                    list.add(it.next());  
                }  
                return list;  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            return null;  
        }  
         
    }

    AutoSetData.java 自动将数据封装到实体类中

    import java.lang.reflect.Method;  
    import java.lang.reflect.Modifier;  
    import java.sql.CallableStatement;  
    import java.sql.Connection;  
    import java.sql.ResultSet;  
    import java.sql.ResultSetMetaData;  
    import java.sql.SQLException;  
    import java.util.ArrayList;  
    import java.util.Collection;  
    public class AutoSetData {  
         
        private Object[] beanMatch(Class clazz, String beanProperty) {  
            Object[] result = new Object[2];  
            char beanPropertyChars[] = beanProperty.toCharArray();  
            beanPropertyChars[0] = Character.toUpperCase(beanPropertyChars[0]);  
            String s = new String(beanPropertyChars);  
            String names[] = { ("set" + s).intern(), ("get" + s).intern(),  
                    ("is" + s).intern(), ("write" + s).intern(),  
                    ("read" + s).intern() };  
            Method getter = null;  
            Method setter = null;  
            Method methods[] = clazz.getMethods();  
            for (int i = 0; i < methods.length; i++) {  
                Method method = methods[i];  
                // 只取公共字段  
                if (!Modifier.isPublic(method.getModifiers()))  
                    continue;  
                String methodName = method.getName().intern();  
                for (int j = 0; j < names.length; j++) {  
                    String name = names[j];  
                    if (!name.equals(methodName))  
                        continue;  
                    if (methodName.startsWith("set")  
                            || methodName.startsWith("read"))  
                        setter = method;  
                    else  
                        getter = method;  
                }  
            }  
            result[0] = getter;  
            result[1] = setter;  
            return result;  
        }  
         
        private void beanRegister(Object object, String beanProperty, String value) {  
            Object[] beanObject = beanMatch(object.getClass(), beanProperty);  
            Object[] cache = new Object[1];  
            Method getter = (Method) beanObject[0];  
            Method setter = (Method) beanObject[1];  
            try {  
                // 通过get获得方法类型  
                String methodType = getter.getReturnType().getName();  
                if (methodType.equalsIgnoreCase("long")) {  
                    cache[0] = new Long(value);  
                    setter.invoke(object, cache);  
                } else if (methodType.equalsIgnoreCase("int")  
                        || methodType.equalsIgnoreCase("integer")) {  
                    cache[0] = new Integer(value);  
                    setter.invoke(object, cache);  
                } else if (methodType.equalsIgnoreCase("short")) {  
                    cache[0] = new Short(value);  
                    setter.invoke(object, cache);  
                } else if (methodType.equalsIgnoreCase("float")) {  
                    cache[0] = new Float(value);  
                    setter.invoke(object, cache);  
                } else if (methodType.equalsIgnoreCase("double")) {  
                    cache[0] = new Double(value);  
                    setter.invoke(object, cache);  
                } else if (methodType.equalsIgnoreCase("boolean")) {  
                    cache[0] = new Boolean(value);  
                    setter.invoke(object, cache);  
                } else if (methodType.equalsIgnoreCase("java.lang.String")) {  
                    cache[0] = value;  
                    setter.invoke(object, cache);  
                } else if (methodType.equalsIgnoreCase("java.io.InputStream")) {  
                } else if (methodType.equalsIgnoreCase("char")) {  
                    cache[0] = (Character.valueOf(value.charAt(0)));  
                    setter.invoke(object, cache);  
                }  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
         
        public Collection get(final Connection connection, final Class clazz,  
                 String sql,Object[] obj) {  
            // 创建PreparedStatement  
            CallableStatement  ptmt = null;  
            // 创建resultset  
            ResultSet rset = null;  
            // 创建collection  
            Collection collection = null;  
            try {  
                // 赋予实例  
                ptmt = connection.prepareCall(sql);  
                for (int i = 1; i <= obj.length; i++) {  
                    ptmt.setObject(i,obj[i-1]);  
                }  
                rset = ptmt.executeQuery();  
                collection = get(rset, clazz);  
            } catch (SQLException e) {  
                System.err.println(e.getMessage());  
            } finally {  
                try {  
                    // 关闭rs并释放资源  
                    if (rset != null) {  
                        rset.close();  
                        rset = null;  
                    }  
                    // 关闭ps并释放资源  
                    if (ptmt != null) {  
                        ptmt.close();  
                        ptmt = null;  
                    }  
                } catch (SQLException e) {  
                    System.err.println(e.getMessage());  
                }  
            }  
            return collection;  
        }  
        public Collection get(final ResultSet result, final Class clazz) {  
            // 创建collection  
            Collection collection = null;  
            try {  
                ResultSetMetaData rsmd = result.getMetaData();  
                // 获得数据列数  
                int cols = rsmd.getColumnCount();  
                // 创建等同数据列数的arraylist类型collection实例  
                collection = new ArrayList(cols);  
                // 遍历结果集  
                while (result.next()) {  
                    // 创建对象  
                    Object object = null;  
                    try {  
                        // 从class获得对象实体  
                        object = clazz.newInstance();  
                    } catch (Exception e) {  
                    }  
                    // 循环每条记录  
                    for (int i = 1; i <= cols; i++) {  
                        beanRegister(object, rsmd.getColumnName(i), result  
                                .getString(i));  
                    }  
                    // 将数据插入collection  
                    collection.add(object);  
                }  
            } catch (SQLException e) {  
                System.err.println(e.getMessage());  
            } finally {  
            }  
            return collection;  
        }  
    }

    查看下篇点击这里http://www.xwcms.net/a/jspzszl/57014.html

     
  • java日期格式化工具类

    今天整理了一份可重用的日期格式化工具类,在日常开发中悲催的程序员离不开这个工具类的

    下面给大家把java日期工具类代码贡献上:

    /**
     * 日期工具类-xw素材网整理
     * 默认使用 "yyyy-MM-dd HH:mm:ss" 格式化日期
     * @author xw素材网
     */
    public final class DateUtils {
    /**
    * 英文简写(默认)如:2010-12-01
    */
    public static String FORMAT_SHORT = "yyyy-MM-dd";
    /**
    * 英文全称  如:2010-12-01 23:15:06
    */
    public static String FORMAT_LONG = "yyyy-MM-dd HH:mm:ss";
    /**
    * 精确到毫秒的完整时间    如:yyyy-MM-dd HH:mm:ss.S
    */
    public static String FORMAT_FULL = "yyyy-MM-dd HH:mm:ss.S";
    /**
    * 中文简写  如:2010年12月01日
    */
    public static String FORMAT_SHORT_CN = "yyyy年MM月dd";
    /**
    * 中文全称  如:2010年12月01日  23时15分06秒
    */
    public static String FORMAT_LONG_CN = "yyyy年MM月dd日  HH时mm分ss秒";
    /**
    * 精确到毫秒的完整中文时间
    */
    public static String FORMAT_FULL_CN = "yyyy年MM月dd日  HH时mm分ss秒SSS毫秒";
    /**
    * 获得默认的 date pattern
    */
    public static String getDatePattern() {
    return FORMAT_LONG;
    }
    /**
    * 根据预设格式返回当前日期
    * @return
    */
    public static String getNow() {
    return format(new Date());
    }
    /**
    * 根据用户格式返回当前日期
    * @param format
    * @return
    */
    public static String getNow(String format) {
    return format(new Date(), format);
    }
    /**
    * 使用预设格式格式化日期
    * @param date
    * @return
    */
    public static String format(Date date) {
    return format(date, getDatePattern());
    }
    /**
    * 使用用户格式格式化日期
    * @param date 日期
    * @param pattern 日期格式
    * @return
    */
    public static String format(Date date, String pattern) {
    String returnValue = "";
    if (date != null) {
    SimpleDateFormat df = new SimpleDateFormat(pattern);
    returnValue = df.format(date);
    }
    return (returnValue);
    }
    /**
    * 使用预设格式提取字符串日期
    * @param strDate 日期字符串
    * @return
    */
    public static Date parse(String strDate) {
    return parse(strDate, getDatePattern());
    }
    /**
    * 使用用户格式提取字符串日期
    * @param strDate 日期字符串
    * @param pattern 日期格式
    * @return
    */
    public static Date parse(String strDate, String pattern) {
    SimpleDateFormat df = new SimpleDateFormat(pattern);
    try {
    return df.parse(strDate);
    } catch (ParseException e) {
    e.printStackTrace();
    return null;
    }
    }
    /**
    * 在日期上增加数个整月
    * @param date 日期
    * @param n 要增加的月数
    * @return
    */
    public static Date addMonth(Date date, int n) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.MONTH, n);
    return cal.getTime();
    }
    /**
    * 在日期上增加天数
    * @param date 日期
    * @param n 要增加的天数
    * @return
    */
    public static Date addDay(Date date, int n) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DATE, n);
    return cal.getTime();
    }
    /**
    * 获取时间戳
    */
    public static String getTimeString() {
    SimpleDateFormat df = new SimpleDateFormat(FORMAT_FULL);
    Calendar calendar = Calendar.getInstance();
    return df.format(calendar.getTime());
    }
    /**
    * 获取日期年份
    * @param date 日期
    * @return
    */
    public static String getYear(Date date) {
    return format(date).substring(0, 4);
    }
    /**
    * 按默认格式的字符串距离今天的天数
    * @param date 日期字符串
    * @return
    */
    public static int countDays (String date) {
    long t = Calendar.getInstance().getTime().getTime();
    Calendar c = Calendar.getInstance();
    c.setTime(parse(date));
    long t1 = c.getTime().getTime();
    return (int)(t/1000 - t1/1000)/3600/24;
    }
    /**
    * 按用户格式字符串距离今天的天数
    * @param date 日期字符串
    * @param format 日期格式
    * @return
    */
    public static int countDays (String date, String format) {
    long t = Calendar.getInstance().getTime().getTime();
    Calendar c = Calendar.getInstance();
    c.setTime(parse(date, format));
    long t1 = c.getTime().getTime();
    return (int)(t/1000 - t1/1000)/3600/24;
    }
    }



     
  • java判断“==”和equals的区别

    java中的'=='运算符用于比较两个变量本身的值,即两个对象在内存中的首地址。

    'equals()'方法比较的是两个字符串中所包含的内容是否相同。

    对于非字符串类型的变量来说,'=='运算符和'equals()'方法都是用来比较其所指对象在堆内存中的首地址,即比较两个类类型的变量是否指向同一个对象。

    下面给大家一个事例:

    public class ep{
    public static void main(String args[])
    {
    ep one =new ep();
    ep two =new ep();
    String a1,a2,a3='abc',a4='abc';
    a1=new String('abc');
    a2=new String('abc');
    System.out.println('a1.equals(a2)是'+(a1.equals(a2)));
    System.out.printin('a1==a2是'+(a1==a2));
    }
    }
    输出的结果是a1.equals(a2)是true    a1==a2是false.


     
  • java实现人民币数字转换中文大写

    java实现人民币数字转换成中文大写价格

    支持小数点转换,抽时间整理这样一个方法,大家可以参考和学习一下。

    package xwcms.net.service;
    import java.util.HashMap;
    /**
     * 数字金额转换成中文大写金额
     * @author ftpeng
     *
     */
    public class test {
    	/**
    	 * 人民币大写单位制
    	 */
    	private static HashMap<Integer, String> dws;
    	/**
    	 * 数字对应的中文
    	 */
    	private static String[] jes;
    	// 初始化执行
    	static{
    		dws = new HashMap<Integer, String>();
    		dws.put(-2, "分");
    		dws.put(-1, "角");
    		dws.put(0, "元");
    		dws.put(1, "拾");
    		dws.put(2, "佰");
    		dws.put(3, "仟");
    		dws.put(4, "万");//
    		dws.put(5, "拾");
    		dws.put(6, "佰");
    		dws.put(7, "仟");
    		dws.put(8, "亿");//
    		dws.put(9, "拾");
    		dws.put(10, "佰");
    		dws.put(11, "仟");
    		dws.put(12, "万");
    		jes = new String[]{"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
    	}
    	/**
    	 * 数字转换人民币大写
    	 * @param number 数字 不支持科学数字
    	 * @return
    	 */
    	public static String chinese(String number){
    		StringBuffer su = new StringBuffer();
    		// 整数部分
    		number = delInvalidZero(number);
    		String str = null;
    		// 小数部分
    		String decimal = null;
    		if(number.contains(".")){
    			// 截取整数位
    			str = number.split("\\.")[0];
    			decimal = number.split("\\.")[1];
    		}else{
    			str = number;
    		}
    		// 判断是否存在整数位
    		if(str.length()>0){
    			for (int i = 0; i < str.length() ; i++) {
    				String context = str.substring(i, i+1);
    				int pow = str.length()-i-1;
    				Integer val = Integer.parseInt(context.toString());
    				// 获取中文单位
    				String sign = dws.get(pow);
    				// 获取中文数字
    				String name = jes[Integer.parseInt(context)];
    				if(val==0){
    					if(pow%4!=0){// 删除单位
    						sign = "";
    					}
    					if(i < str.length()-1){
    						Integer val1 = Integer.parseInt(str.substring(i+1, i+2));
    						if(val==0&&val==val1){
    							name = "";
    						}
    					}else if(i == str.length()-1){
    						name = "";
    					}
    				}
    				su.append(name+sign);
    			}
    		}
    		// 判断是否存在小数位
    		if(decimal!=null){
    			str = decimal.substring(0,1);
    			if(!"0".equals(str)){
    				su.append(jes[Integer.parseInt(str)]+dws.get(-1));
    			}
    			if(decimal.length()==2){
    				str = decimal.substring(1,2);
    				if(!"0".equals(str)){
    					su.append(jes[Integer.parseInt(str)]+dws.get(-2));
    				}
    			}
    		}else{
    			su.append("整");
    		}
    		return su.toString();
    	}
    	/**
    	 * 清理数字特殊字符
    	 * @param str
    	 * @return
    	 */
    	private static String delInvalidZero(String str){
    		if("0".equals(str.substring(0, 1))){
    			return delInvalidZero(str.substring(1, str.length()));
    		}else if(str.contains(",")){
    			return delInvalidZero(str.replaceAll(",", ""));
    		}else{
    			return str;
    		}
    	}
    	public static void main(String[] args) {
    		System.out.println(test.chinese("12.5"));
    	}
    }


     
  • Java接口-抽象类-内部类事例代码

    今天给大家整理一份java内部类事例和抽象类,接口事例代码,顺便说一下内部类作用

    1.接口(interface),接口被用来建立类与类之间关联的标准,ITest为接口,TestImpl为接口(ITest)实现类。

    //接口
    public interface ITest{
          public void test();
    }
    //接口实现类
    public class TestImpl implements ITest{
          public void test(){
                 System.out.println("test");
          }
    }

    2.抽象类(abstract class),只要类中有一个抽象方法,此类就被标记为抽象类。实际上抽象类除了被继承之外没有任何意义。


    区别

    1.

    接口是公开(public)的,里面不能有私有的方法或变量,是用于让别人使用的,实现接口的一定要实现接口里定义的所有方法。

    而抽象类是可以有私有方法或私有变量的,实现抽象类可以有选择地重写需要用到的方法,但是必须实现里面所有的抽象方法。

    2.

    抽象类在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。

    但是,一个类却可以实现多个interface(java中实现多重继承的方法之一)。

    3.

    抽象类中可以有自己的数据成员,也可以有非abstarct的成员方法。

    而在接口中,只能够有静态的不能被修改的数据成员(也就是必须是 static final的,不过在 interface中一般不定义数据成员),而且所有的成员方法都是抽象的。

    4.

    抽象类和接口所反映出的设计理念不同。

    其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。(组合是"has a"关系)

    5.

    接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。

    抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。


    一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。不是很建议具体类直接实现接口的。还有一种设计模式是面向接口编程,而非面向实现编程。


    其实接口是抽象类的延伸,可以将它看做是纯粹的抽象类,就是说接口比抽象类还抽象,还有设计接口的目的就是为了实现C++中的多重继承,不过java团队设计的一样更有趣的东西来实现这个功能,那就是内部类(inner class)。


    内部类(inner class)

    public class OuterClass{//外部类
           private class InnerClass{}//内部类
           
    }

    一.定义

    放在一个类的内部的类我们就叫内部类。

    二.作用

    1.内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以

    2.内部类拥有外围类的所有元素的访问权限

    3.可是实现多重继承(这个特点非常重要,个人认为它是内部类存在的最大理由之一)

    4.可以避免修改接口而实现同一个类中两种同名方法的调用

    三.多重继承的实现

    类一     

    public   class  Example1 {  
      
    public  String getName()  {  
           return   "luffyke" ;  
       }  
    }

    类二  

    public   class  Example2 {  
          
           public   int  getAge()  
           {  
                return   25 ;  
           }  
    }

    类三

    public class MainExample {
    	public class Test1 extends Example1 {
    		public String getName() {
    			return super.getName();
    		}
    	}
    	public class Test2 extends Example2 {
    		public int getAge() {
    			return super.getAge();
    		}
    	}
    	public String showName() {
    		return new Test1().getName();
    	}
    	public int showAge() {
    		return new Test2().getAge();
    	}
    	public static void main(String args[]) {
    		MainExample example = new MainExample();
    		System.out.println("姓名:" + example.showName());
    		System.out.println("年龄:" + example.showAge());
    	}
    }

    大家注意看类三,里面分别实现了两个内部类 Test1,和Test2 ,Test1类又继承了Example1,Test2继承了Example2,这样我们的类三MainExample就拥有了Example1和 Example2的方法和属性,也就间接地实现了多继承。

     
  • Java实现俄罗斯方块源码下载-算法简单代码详解清楚

    给大家上一个java写的俄罗斯方块代码,思路清晰代码简单,大家可以参考学习一下吧。

    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import javax.swing.*;
    import javax.swing.Timer;
    public class Tetris extends JFrame {
    	public Tetris() {
    		Tetrisblok a = new Tetrisblok();
    		addKeyListener(a);
    		add(a);
    	}
    	public static void main(String[] args) {
    		Tetris frame = new Tetris();
    		JMenuBar menu = new JMenuBar();
    		frame.setJMenuBar(menu);
    		JMenu game = new JMenu("游戏");
    		JMenuItem newgame = game.add("新游戏");
    		JMenuItem pause = game.add("暂停");
    		JMenuItem goon = game.add("继续");
    		JMenuItem exit = game.add("退出");
    		JMenu help = new JMenu("帮助");
    		JMenuItem about = help.add("关于");
    		menu.add(game);
    		menu.add(help);
    		frame.setLocationRelativeTo(null);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setSize(220, 275);
    		frame.setTitle("Tetris内测版");
    		// frame.setUndecorated(true);
    		frame.setVisible(true);
    		frame.setResizable(false);
    	}
    }
    // 创建一个俄罗斯方块类
    class Tetrisblok extends JPanel implements KeyListener {
    	// blockType 代表方块类型
    	// turnState代表方块状态
    	private int blockType;
    	private int score = 0;
    	private int turnState;
    	private int x;
    	private int y;
    	private int i = 0;
    	int j = 0;
    	int flag = 0;
    	// 定义已经放下的方块x=0-11,y=0-21;
    	int[][] map = new int[13][23];
    	// 方块的形状 第一组代表方块类型有S、Z、L、J、I、O、T 7种 第二组 代表旋转几次 第三四组为 方块矩阵
    	private final int shapes[][][] = new int[][][] {
    	// i
    			{ { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
    					{ 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 } },
    			// s
    			{ { 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
    					{ 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 } },
    			// z
    			{ { 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 } },
    			// j
    			{ { 0, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
    					{ 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
    			// o
    			{ { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
    			// l
    			{ { 1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
    					{ 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
    			// t
    			{ { 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
    					{ 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
    					{ 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0 } } };
    	// 生成新方块的方法
    	public void newblock() {
    		blockType = (int) (Math.random() * 1000) % 7;
    		turnState = (int) (Math.random() * 1000) % 4;
    		x = 4;
    		y = 0;
    		if (gameover(x, y) == 1) {
    			newmap();
    			drawwall();
    			score = 0;
    			JOptionPane.showMessageDialog(null, "GAME OVER");
    		}
    	}
    	// 画围墙
    	public void drawwall() {
    		for (i = 0; i < 12; i++) {
    			map[i][21] = 2;
    		}
    		for (j = 0; j < 22; j++) {
    			map[11][j] = 2;
    			map[0][j] = 2;
    		}
    	}
    	// 初始化地图
    	public void newmap() {
    		for (i = 0; i < 12; i++) {
    			for (j = 0; j < 22; j++) {
    				map[i][j] = 0;
    			}
    		}
    	}
    	// 初始化构造方法
    	Tetrisblok() {
    		newblock();
    		newmap();
    		drawwall();
    		Timer timer = new Timer(1000, new TimerListener());
    		timer.start();
    	}
    	// 旋转的方法
    	public void turn() {
    		int tempturnState = turnState;
    		turnState = (turnState + 1) % 4;
    		if (blow(x, y, blockType, turnState) == 1) {
    		}
    		if (blow(x, y, blockType, turnState) == 0) {
    			turnState = tempturnState;
    		}
    		repaint();
    	}
    	// 左移的方法
    	public void left() {
    		if (blow(x - 1, y, blockType, turnState) == 1) {
    			x = x - 1;
    		}
    		;
    		repaint();
    	}
    	// 右移的方法
    	public void right() {
    		if (blow(x + 1, y, blockType, turnState) == 1) {
    			x = x + 1;
    		}
    		;
    		repaint();
    	}
    	// 下落的方法
    	public void down() {
    		if (blow(x, y + 1, blockType, turnState) == 1) {
    			y = y + 1;
    			delline();
    		}
    		;
    		if (blow(x, y + 1, blockType, turnState) == 0) {
    			add(x, y, blockType, turnState);
    			newblock();
    			delline();
    		}
    		;
    		repaint();
    	}
    	// 是否合法的方法
    	public int blow(int x, int y, int blockType, int turnState) {
    		for (int a = 0; a < 4; a++) {
    			for (int b = 0; b < 4; b++) {
    				if (((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x
    						+ b + 1][y + a] == 1))
    						|| ((shapes[blockType][turnState][a * 4 + b] == 1) && (map[x
    								+ b + 1][y + a] == 2))) {
    					return 0;
    				}
    			}
    		}
    		return 1;
    	}
    	// 消行的方法
    	public void delline() {
    		int c = 0;
    		for (int b = 0; b < 22; b++) {
    			for (int a = 0; a < 12; a++) {
    				if (map[a][b] == 1) {
    					c = c + 1;
    					if (c == 10) {
    						score += 10;
    						for (int d = b; d > 0; d--) {
    							for (int e = 0; e < 11; e++) {
    								map[e][d] = map[e][d - 1];
    							}
    						}
    					}
    				}
    			}
    			c = 0;
    		}
    	}
    	// 判断你挂的方法
    	public int gameover(int x, int y) {
    		if (blow(x, y, blockType, turnState) == 0) {
    			return 1;
    		}
    		return 0;
    	}
    	// 把当前添加map
    	public void add(int x, int y, int blockType, int turnState) {
    		int j = 0;
    		for (int a = 0; a < 4; a++) {
    			for (int b = 0; b < 4; b++) {
    				if (map[x + b + 1][y + a] == 0) {
    					map[x + b + 1][y + a] = shapes[blockType][turnState][j];
    				}
    				;
    				j++;
    			}
    		}
    	}
    	// 画方块的的方法
    	public void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		// 画当前方块
    		for (j = 0; j < 16; j++) {
    			if (shapes[blockType][turnState][j] == 1) {
    				g.fillRect((j % 4 + x + 1) * 10, (j / 4 + y) * 10, 10, 10);
    			}
    		}
    		// 画已经固定的方块
    		for (j = 0; j < 22; j++) {
    			for (i = 0; i < 12; i++) {
    				if (map[i][j] == 1) {
    					g.fillRect(i * 10, j * 10, 10, 10);
    				}
    				if (map[i][j] == 2) {
    					g.drawRect(i * 10, j * 10, 10, 10);
    				}
    			}
    		}
    		g.drawString("score=" + score, 125, 10);
    		g.drawString("抵制不良游戏,", 125, 50);
    		g.drawString("拒绝盗版游戏。", 125, 70);
    		g.drawString("注意自我保护,", 125, 90);
    		g.drawString("谨防受骗上当。", 125, 110);
    		g.drawString("适度游戏益脑,", 125, 130);
    		g.drawString("沉迷游戏伤身。", 125, 150);
    		g.drawString("合理安排时间,", 125, 170);
    		g.drawString("享受健康生活。", 125, 190);
    	}
    	// 键盘监听
    	public void keyPressed(KeyEvent e) {
    		switch (e.getKeyCode()) {
    		case KeyEvent.VK_DOWN:
    			down();
    			break;
    		case KeyEvent.VK_UP:
    			turn();
    			break;
    		case KeyEvent.VK_RIGHT:
    			right();
    			break;
    		case KeyEvent.VK_LEFT:
    			left();
    			break;
    		}
    	}
    	// 无用
    	public void keyReleased(KeyEvent e) {
    	}
    	// 无用
    	public void keyTyped(KeyEvent e) {
    	}
    	// 定时器监听
    	class TimerListener implements ActionListener {
    		public void actionPerformed(ActionEvent e) {
    			repaint();
    			if (blow(x, y + 1, blockType, turnState) == 1) {
    				y = y + 1;
    				delline();
    			}
    			;
    			if (blow(x, y + 1, blockType, turnState) == 0) {
    				if (flag == 1) {
    					add(x, y, blockType, turnState);
    					delline();
    					newblock();
    					flag = 0;
    				}
    				flag = 1;
    			}
    			;
    		}
    	}
    }


     
  • java IO文件操作简单基础入门例子,IO流其实没那么难

    IO是JAVASE中非常重要的一块,是面向对象的完美体现,深入学习IO,你将可以领略到很多面向对象的思想。

    今天整理了一份适合初学者学习的简单例子,让大家可以更深刻的理解IO流的具体操作。

    1、文件拷贝

    try {
    			File inputFile = new File(args[0]);
    			if (!inputFile.exists()) {
    				System.out.println("源文件不存在,程序终止");
    				System.exit(1);
    			}
    			File outputFile = new File(args[1]);
    			InputStream in = new FileInputStream(inputFile);
    			OutputStream out = new FileOutputStream(outputFile);
    			byte date[] = new byte[1024];
    			int temp = 0;
    			while ((temp = in.read(date)) != -1) {
    				out.write(date);
    			}
    			in.close();
    			out.close();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}

     2、java读文件:实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数,除此之外没有其他字符

     String fileName = "D:/date.java.bak";
    		// String fileName = "D:/test.qqq";
    		String line;
    		int i = 0, j = 0, f = 0, k = 0;
    		try {
    			BufferedReader in = new BufferedReader(new FileReader(fileName));
    			line = in.readLine();
    			while (line != null) {
    				// System.out.println(line);
    				char c[] = line.toCharArray();
    				for (int i1 = 0; i1 < c.length; i1++) {
    					// 如果是字母
    					if (Character.isLetter(c[i1]))
    						i++;
    					// 如果是数字
    					else if (Character.isDigit(c[i1]))
    						j++;
    					// 是空格
    					else if (Character.isWhitespace(c[i1]))
    						f++;
    				}
    				line = in.readLine();
    				k++;
    			}
    			in.close();
    			System.out
    					.println("字母:" + i + ",数字:" + j + ",空格:" + f + ",行数:" + k);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}

    3、 从文件(d:\test.txt)中查出字符串”aa”出现的次数

    try {
                BufferedReader br = new BufferedReader(new FileReader(
                        "D:\\test.txt"));
                StringBuilder sb = new StringBuilder();
                while (true) {
                    String str = br.readLine();
                    if (str == null)
                        break;
                    sb.append(str);
                }
                Pattern p = Pattern.compile("aa");
                Matcher m = p.matcher(sb);
                int count = 0;
                while (m.find()) {
                    count++;
                }
                System.out.println("\"aa\"一共出现了" + count + "次");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

    4、 三种方法读取文件

     try {
    			// 方法一
    			BufferedReader br = new BufferedReader(new FileReader(new File(
    					"D:\\1.xls")));
    			// StringBuilder bd = new StringBuilder();
    			StringBuffer bd = new StringBuffer();
    			while (true) {
    				String str = br.readLine();
    				if (str == null) {
    					break;
    				}
    				System.out.println(str);
    				bd.append(str);
    			}
    			br.close();
    			// System.out.println(bd.toString());
    			// 方法二
    			InputStream is = new FileInputStream(new File("d:\\1.xls"));
    			byte b[] = new byte[Integer.parseInt(new File("d:\\1.xls").length()
    					+ "")];
    			is.read(b);
    			System.out.write(b);
    			System.out.println();
    			is.close();
    			// 方法三
    			Reader r = new FileReader(new File("d:\\1.xls"));
    			char c[] = new char[(int) new File("d:\\1.xls").length()];
    			r.read(c);
    			String str = new String(c);
    			System.out.print(str);
    			r.close();
    		} catch (RuntimeException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}

    5、三种方法写文件

     try {
    			PrintWriter pw = new PrintWriter(new FileWriter("d:\\1.txt"));
    			BufferedWriter bw = new BufferedWriter(new FileWriter(new File(
    					"d:\\1.txt")));
    			OutputStream os = new FileOutputStream(new File("d:\\1.txt"));
    			// 1
    			os.write("ffff".getBytes());
    			// 2
    			// bw.write("ddddddddddddddddddddddddd");
    			// 3
    			// pw.print("你好sssssssssssss");
    			bw.close();
    			pw.close();
    			os.close();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}

    6、读取文件,并把读取的每一行存入double型数组中

    try {
    			BufferedReader br = new BufferedReader(new FileReader(new File(
    					"d:\\2.txt")));
    			StringBuffer sb = new StringBuffer();
    			while (true) {
    				String str = br.readLine();
    				if (str == null) {
    					break;
    				}
    				sb.append(str + "、");
    			}
    			String str = sb.toString();
    			String s[] = str.split("、");
    			double d[] = new double[s.length];
    			for (int i = 0; i < s.length; i++) {
    				d[i] = Double.parseDouble(s[i]);
    			}
    			for (int i = 0; i < d.length; i++) {
    				System.out.println(d[i]);
    			}
    			br.close();
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}


     
  • java实现 字符串解析

    java实现 字符串解析

    StringTokenizer tokenizer = new StringTokenizer(number, ",");
    		boolean bool = true;
    		while (tokenizer.hasMoreTokens()) {
    			try {
    				Double.valueOf(tokenizer.nextToken());
    			} catch (Exception e) {
    				bool = false;
    			}
    		}
    //将字符串转化为数组的方法
    int gv[];
       int i = 0; 
       StringTokenizer tokenizer = new StringTokenizer(goodsVolume, ",, ");
             gv = new int[tokenizer.countTokens()];//动态的决定数组的长度
    	 while (tokenizer.hasMoreTokens()) {
    		String d = tokenizer.nextToken();
    		gv[i] = Integer.valueOf(d);//将字符串转换为整型
    		i++;
    	}
     //字符串解析
    	private String[] stringAnalytical(String str, String divisionChar) {
    		String string[];
    	   int i = 0; 
    		StringTokenizer tokenizer = new StringTokenizer(str, divisionChar);
    		string = new String[tokenizer.countTokens()];// 动态的决定数组的长度
    		 while (tokenizer.hasMoreTokens()) {
    			string[i] = new String();
    			string[i] = tokenizer.nextToken();
    			i++;
    		}
    		return string;// 返回字符串数组
    	}
     int countTokens() 
              计算在生成异常之前可以调用此 tokenizer 的 nextToken 方法的次数。 
     boolean hasMoreElements() 
              返回与 hasMoreTokens 方法相同的值。 
     boolean hasMoreTokens() 
              测试此 tokenizer 的字符串中是否还有更多的可用标记。 
     Object nextElement() 
              除了其声明返回值是 Object 而不是 String 之外,它返回与 nextToken 方法相同的值。 
     String nextToken() 
              返回此 string tokenizer 的下一个标记。 
     String nextToken(String delim) 
              返回此 string tokenizer 的字符串中的下一个标记。 
    public class StringAnalytical {
    	// 字符串解析,将字符串转根据分割符换成字符串数组
    	private String[] stringAnalytical(String string, char c) {
    		int i = 0;
    		int count = 0;
    		if (string.indexOf(c) == -1)
    			return new String[] { string };// 如果不含分割符则返回字符本身
    		char[] cs = string.toCharArray();
    		int length = cs.length;
    		for (i = 1; i < length - 1; i++) {// 过滤掉第一个和最后一个是分隔符的情况
    			if (cs[i] == c) {
    				count++;// 得到分隔符的个数
    			}
    		}
    		String[] strArray = new String[count + 1];
    		int k = 0, j = 0;
    		String str = string;
    		if ((k = str.indexOf(c)) == 0)// 去掉第一个字符是分隔符的情况
    			str = str.substring(k + 1);
    		if (str.indexOf(c) == -1)// 检测是否含分隔符,如果不含则返回字符串
    			return new String[] { str };
    		while ((k = str.indexOf(c)) != -1) {// 字符串含分割符的时候
    			strArray[j++] = str.substring(0, k);
    			str = str.substring(k + 1);
    			if ((k = str.indexOf(c)) == -1 && str.length() > 0)
    				strArray[j++] = str.substring(0);
    		}
    		return strArray;
    	}
    	public void printString(String[] s) {
    		System.out.println("*********************************");
    		for (String str : s)
    			System.out.println(str);
    	}
    	public static void main(String[] args) {
    		String[] str = null;
    		StringAnalytical string = new StringAnalytical();
    		str = string.stringAnalytical("1aaa", '@');
    		string.printString(str);
    		str = string.stringAnalytical("2aaa@", '@');
    		string.printString(str);
    		str = string.stringAnalytical("@3aaa", '@');
    		string.printString(str);
    		str = string.stringAnalytical("4aaa@bbb", '@');
    		string.printString(str);
    		str = string.stringAnalytical("@5aaa@bbb", '@');
    		string.printString(str);
    		str = string.stringAnalytical("6aaa@bbb@", '@');
    		string.printString(str);
    		str = string.stringAnalytical("@7aaa@", '@');
    		string.printString(str);
    		str = string.stringAnalytical("@8aaa@bbb@", '@');
    		string.printString(str);
    		str = string.stringAnalytical("@9aaa@bbb@ccc", '@');
    		string.printString(str);
    		str = string.stringAnalytical("@10aaa@bbb@ccc@eee", '@');
    		string.printString(str);
    	}
    }


     
@ 2013 xwcms.net . All Rights Reserved. xw素材网 | 备案号:晋ICP备13005902号 联系管理员
×

邮箱订阅

什么是邮箱订阅?

邮箱订阅是xw素材网为jquery爱好者与web程序员提供一项以邮箱的方式发送最新jquery资源与素材资源的模式,用户只需在左侧填写正确的邮箱用户名与邮箱地址我们将每天推荐最新优质资源到用户邮箱。当然每份邮箱都会有一个取消订阅按钮,当用户点击取消按钮时我们将会停止对用户发送邮箱资源推送。再次感谢大家对xw素材网的支持与关注。