• JAVA文件操作


    package shangke.dijiuzhou;  
      
    import java.io.File;  
    import java.io.InputStreamReader;
    import java.math.BigDecimal;
    import java.io.BufferedReader;  
    import java.io.BufferedWriter;  
    import java.io.FileInputStream;
    import java.util.Arrays;
    import java.util.List;
    import java.util.StringTokenizer;
    import java.io.FileWriter;  
      
    public class cin_txt {  
        
        
        public static void main(String args[]) {  
        
            int zongshu=0;
            int flag=1;
            int flag1=1;
            String hang;
            int length;
            int n;
            char biao;
            char word[]=new char[60];
            int sum[]=new int[60];
            int num=0;
            String sss="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            word=sss.toCharArray();
            for(int i=0;i<52;i++)
            {
                System.out.println(word[i]);
            }
            System.out.println("*****************");
             try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw  
                  
                 /* 读入TXT文件 */  
                 String pathname = "H:\cin_text.txt"; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径  
                 File filename = new File(pathname); // 要读取以上路径的input。txt文件  
                 InputStreamReader reader = new InputStreamReader(  
                         new FileInputStream(filename));
                 BufferedReader br = new BufferedReader(reader);  
                 String line = "";  
                 line = br.readLine();  
                 while (line != null) {  
                     
                     StringTokenizer st2 = new StringTokenizer(line, ",,., ,!,?,“,”,‘,-,'");
                      
                     while (st2.hasMoreElements()) {
                         hang=String.valueOf(st2.nextElement());
                         length=hang.length();
                         n=0;
                         while(true)
                         {
                             biao=hang.charAt(n++);
                             switch(biao)
                             {
                             case 'a' : sum[0]++;break;
                             case 'b' : sum[1]++;break;
                             case 'c' : sum[2]++;break;
                             case 'd' : sum[3]++;break;
                             case 'e' : sum[4]++;break;
                             case 'f' : sum[5]++;break;
                             case 'g' : sum[6]++;break;
                             case 'h' : sum[7]++;break;
                             case 'i' : sum[8]++;break;
                             case 'j' : sum[9]++;break;
                             case 'k' : sum[10]++;break;
                             case 'l' : sum[11]++;break;
                             case 'm' : sum[12]++;break;
                             case 'n' :sum[13]++;break;
                             case 'o' :sum[14]++;break;
                             case 'p' :sum[15]++;break;
                             case 'q' :sum[16]++;break;
                             case 'r' :sum[17]++;break;
                             case 's' :sum[18]++;break;
                             case 't' :sum[19]++;break;
                             case 'u' :sum[20]++;break;
                             case 'v' :sum[21]++;break;
                             case 'w' :sum[22]++;break;
                             case 'x' :sum[23]++;break;
                             case 'y' :sum[24]++;break;
                             case 'z' :sum[25]++;break;
                         
                             case 'A' : sum[26]++;break;
                             case 'B' : sum[27]++;break;
                             case 'C' : sum[28]++;break;
                             case 'D' : sum[29]++;break;
                             case 'E' : sum[30]++;break;
                             case 'F' : sum[31]++;break;
                             case 'G' : sum[32]++;break;
                             case 'H' : sum[33]++;break;
                             case 'I' : sum[34]++;break;
                             case 'J' : sum[35]++;break;
                             case 'K' : sum[36]++;break;
                             case 'L' : sum[37]++;break;
                             case 'M' : sum[38]++;break;
                             case 'N' :sum[39]++;break;
                             case 'O' :sum[40]++;break;
                             case 'P' :sum[41]++;break;
                             case 'Q' :sum[42]++;break;
                             case 'R' :sum[43]++;break;
                             case 'S' :sum[44]++;break;
                             case 'T' :sum[45]++;break;
                             case 'U' :sum[46]++;break;
                             case 'V' :sum[47]++;break;
                             case 'W' :sum[48]++;break;
                             case 'X' :sum[49]++;break;
                             case 'Y' :sum[50]++;break;
                             case 'Z' :sum[51]++;break;
                             
                             }
                             zongshu++;
                             length--;
                             if(length<=0)
                             {
                                 break;
                             }
                         }
                         
                     }
                    // System.out.println();
                     
                     //System.out.println("**********");
                     //System.out.println(line);
                     line = br.readLine(); // 一次读入一行数据 
                 }  
       
                 /* 写入Txt文件 */  
                /* File writename = new File("H:\wenben0.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件  
                 writename.createNewFile(); // 创建新文件  
                 BufferedWriter out = new BufferedWriter(new FileWriter(writename));  
                 out.write("我会写入文件啦
    "); // 
    即为换行  
                 out.flush(); // 把缓存区内容压入文件  
                 out.close(); // 最后记得关闭文件 */ 
       
             } catch (Exception e) {  
                 e.printStackTrace();  
             }
             int ma,b;
             char a;
             for(int i=0;i<51;i++)
             {
                 ma=sum[i];
                 b=i;
                 a=word[i];
                 for(int j=i+1;j<52;j++)
                 {
                     if(ma>=sum[j])
                     {
                         ma=sum[j];
                         b=j;
                     }
                 }
                 ma=sum[i];
                 sum[i]=sum[b];
                 sum[b]=ma;
                 word[i]=word[b];
                 word[b]=a;
             }
             System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!");
             
             for(int i=0;i<52;i++)
             {
                 double what=(double)sum[i]/zongshu*100;
                 BigDecimal bg=new BigDecimal(what);
                 double f1=bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                 System.out.println(word[i]+"  "+f1+"%");
             }
             System.out.println("%%%%%%%%%%%%%%%%%%%");
             for(int i=51;i>=0;i--)
             {
                 double what=(double)sum[i]/zongshu*100;
                 BigDecimal bg=new BigDecimal(what);
                 double f1=bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                 System.out.println(word[i]+"  "+f1+"%");
             }
             
            
             
             
        }
            
    }  

    上面的代码是文件操作的文件导入操作,统计英文文本文件中的英文单字母所占总数的百分比

    思路:开俩个数组和一个计数器。通过switch来统计各个字母的个数,在最后进行计算。

    package shangke.disanzhou;  
      
    import java.io.File;  
    import java.io.InputStreamReader;
    import java.math.BigDecimal;
    import java.io.BufferedReader;  
    import java.io.BufferedWriter;  
    import java.io.FileInputStream;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Scanner;
    import java.util.StringTokenizer;
    import java.io.FileWriter;  
      
    public class cin_txt {  
        
        public static void haha(String lujing)
        {
            int n=0;
            int flag;
            int m=0;
             String word[]=new String[100000];
             int sum[]=new int[100000];
             String hang[]=new String[1000];
             List<String> list;
             String w;
             int zongshu=0;
            int i=0;
            try { // 防止文件建立或读取失败,用catch捕捉错误并打印,也可以throw  
      
                /* 读入TXT文件 */  
                String pathname = lujing; // 绝对路径或相对路径都可以,这里是绝对路径,写入文件时演示相对路径  
                File filename = new File(pathname); // 要读取以上路径的input。txt文件  
                InputStreamReader reader = new InputStreamReader(  
                        new FileInputStream(filename));
                BufferedReader br = new BufferedReader(reader);  
                String line = "";  
                line = br.readLine();  
                while (line != null) {  
                    
                    StringTokenizer st2 = new StringTokenizer(line, " ,-");
                     i=0;
                    while (st2.hasMoreElements()) {
                        hang[i]=String.valueOf(st2.nextElement());
                        //hang[i]=(String) st2.nextElement();
                        hang[i]=hang[i].toLowerCase();
                        //System.out.println("************");
                        m++;
                         list = Arrays.asList(word);
                      flag = list.indexOf(hang[i]);
                        if(flag==-1)
                        {
                            word[n]=hang[i];
                            sum[n]++;
                            n++;
                            zongshu++;
                        }
                        else
                        {
                            sum[flag]++;
                            zongshu++;
                        }
                        //System.out.print(hang[i]+" ");
                        i++;
                    }
                   // System.out.println();
                    
                    //System.out.println("**********");
                    //System.out.println(line);
                    line = br.readLine(); // 一次读入一行数据 
                }  
      
                /* 写入Txt文件 */  
               /* File writename = new File("H:\wenben0.txt"); // 相对路径,如果没有则要建立一个新的output。txt文件  
                writename.createNewFile(); // 创建新文件  
                BufferedWriter out = new BufferedWriter(new FileWriter(writename));  
                out.write("我会写入文件啦
    "); // 
    即为换行  
                out.flush(); // 把缓存区内容压入文件  
                out.close(); // 最后记得关闭文件 */ 
      
            } catch (Exception e) {  
                e.printStackTrace();  
            }
            
            int ma=0;
            int biao=0;
            for(int j=0;j<n-1;j++)
            {
                ma=sum[j];
                biao=j;
                w=word[j];
                for(int k=j+1;k<n;k++)
                {
                    if(ma<sum[k])
                    {
                        ma=sum[k];
                        biao=k;
                    }
                }
                sum[biao]=sum[j];
                sum[j]=ma;
                word[j]=word[biao];
                word[biao]=w;
            }
            //System.out.println(m);
           // System.out.println(n);
            //System.out.println("***********");
           /* for(int j=0;j<n;j++)
            {
                System.out.println(sum[j]);
                System.out.println(word[j]);
            }*/
            System.out.println("请输入:");
            Scanner shuru=new Scanner(System.in);
            int mmm;
            mmm=shuru.nextInt();
            for(int j=0;j<mmm;j++)
            {
                double what=(double)sum[j]/zongshu*100;
                BigDecimal bg=new BigDecimal(what);
                double f1=bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
                System.out.println(word[j]+"  "+f1+"%");
                
            }
        }
        
        
        
        
        public static void main(String args[]) {  
            
        }  
    }  

    上面这个代码是统计各个单词个数并将每个单词进行排序输出

    主要的就是利用那个分隔符函数和List中的寻找下标的函数其他的都是一下基础的统计,但是这只是个被调用的函数,没有进行任何操作,如果想操作可以在main函数调用

    package shangke.disanzhou;
    
    import java.nio.file.DirectoryStream;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    public class diaoyong {
        public  int enen(String dao)
    
        {
            int length;
            int flag=1;
            Path path=Paths.get(dao);
            try
            {
                DirectoryStream<Path> children=Files.newDirectoryStream(path);
                for(Path child:children)
                {
                    flag=1;
                    String lujing;
                    lujing=child.toString();
                    length=lujing.length();
                    if(length==0)
                    {
                        return 0;
                    }
                    char sta[]=new char[1000];
                    sta=lujing.toCharArray();
                    for(int i=0;i<length;i++)
                    {
                        if(sta[i]=='\')
                            {
                                    sta[i]='/';
                            }
                        if(sta[i]=='.')
                        {
                            
                            flag=0;
                        }
                    }
                    lujing=String.valueOf(sta);
                    System.out.println(lujing);
                    if(flag==1)
                    {
                        enen(lujing);
                    }
                    else
                    {
                        cin_txt.haha(lujing);
                        System.out.println("*********************************");
                    }
                    
                    
                }
            }
            catch(Exception e)
            {
                
            }
            return 0;
        }
        public static void main(String[] args) {
            {
                diaoyong sta=new diaoyong();
                sta.enen("H:/aaaa");
                
            }
        }
    
    }

    这个代码是对第二个代码的调用,这段代码通过递归的方式遍历文件夹,然后调用第二个代码对文本文件进行单词的统计

  • 相关阅读:
    并发编程练习题
    Python GIL(Global Interpreter Lock)
    并发编程之多进程
    并发编程之协程
    并发编程之多线程
    python 闯关之路三(面向对象与网络编程)
    python笔试题(2)
    开发一个支持多用户在线的FTP程序
    黄哥漫谈Python 生成器。
    scrapy 报错 no module named win32api 的解决方案
  • 原文地址:https://www.cnblogs.com/yizhixiaozhu/p/11797669.html
Copyright © 2020-2023  润新知