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");
            
        }
    }

}

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

原文地址:https://www.cnblogs.com/yizhixiaozhu/p/11797669.html