zoukankan      html  css  js  c++  java
  • 【Java文件】按UTF-8编码读取文本文件(逐行方式),排序,打印到控制台

    代码:

    package findJavaMemberFunction;
    
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * 查找一个Java源文件中的成员函数名
     *
     */
    public class FindFunctionNames {
        public static void main(String[] args) {
    
            
            try {
                // (\s+):group(2) 匹配一个或多个空格
                // (\S+):group(3) 匹配返回值如void,String
                // (\s+):group(4) 匹配一个或多个空格
                // ([_a-zA-Z]+[_a-zA-Z0-9]*):group(5) 匹配函数名
                // ([(]([^()]*)[)]):group(1) 匹配函数的参数
                java.util.regex.Pattern pattern=Pattern.compile("(\s+)(public|protected|private|static)(\s+)(\S+)(\s+)([_a-zA-Z]+[_a-zA-Z0-9]*)([(]([^()]*)[)])");
                
                List<String> list=new ArrayList<String>();
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("d:\logs\Json.java"), "UTF-8"));  
                String line = null;  
                int lineIndex=0;
                while( ( line = br.readLine() ) != null ) {
                    lineIndex++;
                    
                    Matcher matcher=pattern.matcher(line);
                    while(matcher.find()) {
                        System.out.println("Line " + lineIndex +":" + matcher.group(6)+ matcher.group(7));
                    }
                    
                    list.add(line);  
                }
                br.close();  
            } catch (FileNotFoundException ex) {
                ex.printStackTrace();
            } catch (IOException ex) {
                ex.printStackTrace();
            } 
        }
    }

    输出:

    Line 58:getValueList()
    Line 62:addJsonToList(Json json)
    Line 71:addJsonToArray(Json json)
    Line 79:adjustDepth()
    Line 97:toString()
    Line 152:compareTo(Json other)
    Line 156:getIndentSpace()
    Line 160:getKey()
    Line 164:setKey(String key)
    Line 168:getParent()
    Line 172:setParent(Json parent)
    Line 176:main(String[] args)

    测试文件:

      1 package com.hy;
      2 
      3 import java.util.Collections;
      4 import java.util.LinkedList;
      5 import java.util.List;
      6 
      7 /**
      8  * Json对象类
      9  * @author 逆火
     10  *
     11  * 2019年12月2日 下午8:17:06
     12  */
     13 public class Json implements Comparable<Json>{
     14     
     15     // There are value types
     16     public static final int Type_String=1;
     17     public static final int Type_Array=2;
     18     public static final int Type_List=3;
     19     
     20     // Key always is String
     21     private String key;
     22     private Json parent;
     23 
     24     // There are three types of value
     25     private int valueType;
     26     private String valueString;
     27     private List<Json> valueList;
     28     
     29     // indent depth
     30     private int depth;
     31     
     32     public Json() {
     33         
     34     }
     35     
     36     /**
     37      * Contructor1
     38      */
     39     public Json(String key,String value) {
     40         this.key=key;
     41         this.valueType=Type_String;
     42         this.valueString=value;
     43         this.depth=0;
     44     }
     45     
     46     public Json(String key,int type) {
     47         this.key=key;
     48         
     49         if(type==Type_List) {
     50             this.valueType=Type_List;
     51             this.valueList=new LinkedList<Json>();
     52         }else if(type==Type_Array) {
     53             this.valueType=Type_Array;
     54             this.valueList=new LinkedList<Json>();
     55         }
     56     }
     57     
     58     public List<Json> getValueList() {
     59         return valueList;
     60     }
     61     
     62     public void addJsonToList(Json json) {
     63         if(valueList!=null) {
     64             valueList.add(json);
     65             json.parent=this;
     66             
     67             adjustDepth();
     68         }
     69     }
     70     
     71     public void addJsonToArray(Json json) {
     72         if(valueList!=null) {
     73             valueList.add(json);
     74             json.parent=this;
     75             adjustDepth();
     76         }
     77     }
     78     
     79     private void adjustDepth() {
     80         if(valueType==Type_List) {
     81             for(Json json:valueList) {
     82                 json.depth=this.depth+1;
     83                 json.adjustDepth();
     84             }
     85             
     86             
     87         }
     88         
     89         if(valueType==Type_Array) {
     90             for(Json json:valueList) {
     91                 json.depth=this.depth+1;
     92                 json.adjustDepth();
     93             }
     94         }
     95     }
     96     
     97     public String toString() {
     98         StringBuilder sb=new StringBuilder();
     99         
    100         // key
    101         String tabs=getIndentSpace();
    102         sb.append(tabs);
    103         //sb.append("""+(key==null?"":key)+""");
    104         
    105         if(key!=null) {
    106             //sb.append("""+key+""");// 以对象构建时恢复
    107             sb.append(key);// 以文件构建时打开
    108             sb.append(":");
    109         }else {
    110             
    111         }
    112         
    113         // value
    114         if(valueType==Type_String) {
    115             //sb.append("""+valueString+""");// 以对象构建时恢复
    116             sb.append(valueString);// 以文件构建时打开
    117         }else if(valueType==Type_Array) {
    118             sb.append("[
    ");
    119             
    120             int n=valueList.size();
    121             for(int i=0;i<n;i++) {
    122                 Json json=valueList.get(i);
    123                 if(i!=n-1) {
    124                     sb.append(json.toString()+",
    ");
    125                 }else {
    126                     sb.append(json.toString()+"
    ");
    127                 }
    128             }
    129             
    130             sb.append(tabs+"]");
    131         }else if(valueType==Type_List) {
    132             sb.append("{
    ");
    133             
    134             Collections.sort(valueList);
    135             
    136             int n=valueList.size();
    137             for(int i=0;i<n;i++) {
    138                 Json json=valueList.get(i);
    139                 if(i!=n-1) {
    140                     sb.append(json.toString()+",
    ");
    141                 }else {
    142                     sb.append(json.toString()+"
    ");
    143                 }
    144             }
    145             
    146             sb.append(tabs+"}");
    147         }
    148         
    149         return sb.toString();
    150     }
    151     
    152     public int compareTo(Json other) {
    153         return this.key.compareTo(other.key);
    154     }
    155     
    156     private String getIndentSpace() {
    157         return String.join("", Collections.nCopies(this.depth, "    "));
    158     }
    159     
    160     public String getKey() {
    161         return key;
    162     }
    163 
    164     public void setKey(String key) {
    165         this.key = key;
    166     }
    167     
    168     public Json getParent() {
    169         return parent;
    170     }
    171 
    172     public void setParent(Json parent) {
    173         this.parent = parent;
    174     }
    175     
    176     public static void main(String[] args) {
    177         Json id1=new Json("id","001");
    178         Json name1=new Json("name","鐧借彍");
    179         
    180         Json title=new Json("title",3);
    181         title.addJsonToList(id1);
    182         title.addJsonToList(name1);
    183         
    184         Json empty1=new Json(null,3);
    185         empty1.addJsonToList(new Json("id","001"));
    186         empty1.addJsonToList(new Json("id","浣犲ソ鐧借彍"));
    187         
    188         Json empty2=new Json(null,3);
    189         empty2.addJsonToList(new Json("id","001"));
    190         empty2.addJsonToList(new Json("id","浣犲ソ钀濆崪"));
    191         
    192         Json content=new Json("content",2);
    193         content.addJsonToArray(empty1);
    194         content.addJsonToArray(empty2);
    195         
    196         Json data=new Json("data",3);
    197         data.addJsonToList(title);
    198         data.addJsonToList(content);
    199         
    200         Json status=new Json("status","0000");
    201         Json message=new Json("message","success");
    202         
    203         Json root=new Json(null,3);
    204         root.addJsonToList(status);
    205         root.addJsonToList(message);
    206         root.addJsonToList(data);
    207         
    208         System.out.println(root.toString());
    209     }
    210 }

    --END-- 2019年11月30日17:42:48

  • 相关阅读:
    pip不是内部或外部命令也不是可运行的程序或批处理文件的问题
    动态规划 leetcode 343,279,91 & 639. Decode Ways,62,63,198
    动态规划 70.climbing Stairs ,120,64
    (双指针+链表) leetcode 19. Remove Nth Node from End of List,61. Rotate List,143. Reorder List,234. Palindrome Linked List
    建立链表的虚拟头结点 203 Remove Linked List Element,82,147,148,237
    链表 206 Reverse Linked List, 92,86, 328, 2, 445
    (数组,哈希表) 219.Contains Duplicate(2),217 Contain Duplicate, 220(3)
    重装系统
    java常用IO
    端口
  • 原文地址:https://www.cnblogs.com/heyang78/p/11963388.html
Copyright © 2011-2022 走看看