精华内容
下载资源
问答
  • 主要为大家详细介绍了java统计文件中每个字符出现的个数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 这是C++程序,能够统计文件中字母的个数,且占用资源少,程序简单明了.
  • 统计文件中字符的个数,java作业. int c; int[] s; s=new int[129]; while((c=in.read())!=-1){ if(c>127||c) s[128]++; else s[c]++;
  • 本文介绍java读文件实例,实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数,除此之外没有其他字符,大家参考使用吧
  • 今天小编就为大家分享一篇python 统计文件中的字符串数目示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 统计当前目录下文件个数(不包括目录): ls -l | grep... 统计当前目录下文件夹的个数(包括子目录):ls -lR | grep "^d" | wc -l ls -l : 长列表输出文件信息,包括属性,每行对应一个文件或目录 ls -...
    • 统计当前目录下文件个数(不包括目录):  ls -l | grep "^-"| wc -l

    • 统计当前目录下文件个数(包括目录):ls -lR | grep "^-" | wc -l

    • 统计当前目录下文件夹的个数(包括子目录):ls -lR | grep "^d" | wc -l

    • ls -l : 长列表输出文件信息,包括属性,每行对应一个文件或目录

    • ls -lR:  按行列出所有文件,包括子目录

    • grep "^-" : 过滤ls输出的信息,只保留一般文件(非目录)。只保留目录是 grep "^d"

    • wc -l :统计行数,输出多少行就是多少个文件,所以行数也就是文件个数 

    展开全文
  • 用二叉搜索树实现统计一个文件中单词的个数
  • 【题目】使用python统计文件夹以及子文件夹文件数目 概述 使用python统计文件夹以及子文件夹文件数目,并将结果写入txt文件。只统计有文件的文件夹,空文件夹直接跳过。 【代码】: import os from ...

    【时间】2018.11.25

    【题目】使用python统计文件夹以及子文件夹中的文件数目

    概述

    使用python统计文件夹以及子文件夹中的文件数目,并将结果写入txt文件中。只统计有文件的文件夹,空文件夹直接跳过。

    【代码】:

    import os
    
    from progressbar import ProgressBar
    
    path ='F:\\test\\devel'
    
    original_images =[]
    
    
    
    #walk direction
    
    for root, dirs, filenames in os.walk(path):
    
        for filename in filenames:
    
            original_images.append(os.path.join(root, filename))
    
    original_images = sorted(original_images)
    
    
    
    print('num:',len(original_images))
    
    f = open('tongji_files.txt','w+')
    
    error_images =[]
    
    progress = ProgressBar()
    
    current_dirname =os.path.dirname(original_images[0])
    
    file_num =0
    
    for filename in progress(original_images):
    
        dirname = os.path.dirname(filename)
    
        if dirname != current_dirname or filename == original_images[-1]:
    
            if filename == original_images[-1]:
    
                file_num += 1
    
            f.write('%s:\t%d\n'%(current_dirname,file_num))
    
            current_dirname = dirname
    
            file_num = 1
    
        else:
    
            file_num +=1
    
    f.seek(0)
    
    for s in f:
    
        print(s)
    
    f.close()

     

    【运行结果】:

    txt文件:

     

     

     

    展开全文
  • 本文给大家汇总介绍了3种使用C++实现统计文件中的字符个数的方法,非常的简单实用,有需要的小伙伴可以参考下。
  • 编写程序,统计英文文本文件中的字符数目和单词数目。程序运行时,输入要统计文件的名称,程序处理后输出字符数目和单词数目。 (程序去除文本开头的空格与回车,统计中将回车换行也统计在内,算两个字符)
  • Android扫描文件并统计各类文件数目

    千次阅读 2017-12-16 22:10:45
    最近在模仿小米的文件管理器写一个自己的文件管理器,其中有一个功能是全盘扫描文件并显示每类文件数目。刚开始使用单一线程,扫描速度简直惨不忍睹,换成多线程扫描以后,速度有较明显的提升,便封装了一个工具类...

    最近在模仿小米的文件管理器写一个自己的文件管理器,其中有一个功能是全盘扫描文件并显示每类文件的数目。刚开始使用单一线程,扫描速度简直惨不忍睹,换成多线程扫描以后,速度有较明显的提升,便封装了一个工具类,分享出来。

    一、遇到的问题

    首先描述一下遇到的问题:

    1 . Android端全盘扫描文件

    2 . 开一个子线程扫描太慢,使用多线程扫描

    3 . 统计每一类文件的数目(比如:视频文件,图片文件,音频文件的数目)

    二、解决思路

    接下来描述一下几个点的解决思路:

    1 . 首先目录的存储结构是树状结构,这里就设计到了树的遍历,这里我使用树的层次遍历,使用非递归方法实现,具体的遍历思路后面会有代码,这里只说明是借助于队列完成树的层次遍历。

    2 . 第二个思路便是我们需要传入的参数,这里其实涉及到的是数据的存储结构问题,这里我使用的数据结构如下:

    Map<String, Set<String>>

    解释一下这个数据结构,map的key表示种类,value是个Set这个Set里面包含该种类的文件的后缀名。如下:

    Map<String, Set<String>> CATEGORY_SUFFIX = new HashMap<>();
    Set<String> set = new HashSet<>();
    set.add("mp4");
    set.add("avi");
    set.add("wmv");
    set.add("flv");
    CATEGORY_SUFFIX.put("video", set);
    
    set.add("txt");
    set.add("pdf");
    set.add("doc");
    set.add("docx");
    set.add("xls");
    set.add("xlsx");
    CATEGORY_SUFFIX.put("document", set);
    
    set = new HashSet<>();
    set.add("jpg");
    set.add("jpeg");
    set.add("png");
    set.add("bmp");
    set.add("gif");
    CATEGORY_SUFFIX.put("picture", set);
    
    set = new HashSet<>();
    set.add("mp3");
    set.add("ogg");
    CATEGORY_SUFFIX.put("music", set);
    
    set = new HashSet<>();
    set.add("apk");
    CATEGORY_SUFFIX.put("apk", set);
    
    set = new HashSet<>();
    set.add("zip");
    set.add("rar");
    set.add("7z");
    CATEGORY_SUFFIX.put("zip", set);

    这里的后缀为什么使用Set来存储呢,主要是考虑到后面需要涉及到查找(获得一个文件的后缀,需要在查找属于哪个类别),Set的查找效率比较高

    3 . 前面说了目录的遍历需要借助于队列进行层次遍历,又因为是多线程环境下,所以我们选用线程安全的队列ConcurrentLinkedQueue

    ConcurrentLinkedQueue<File> mFileConcurrentLinkedQueue;

    4 . 还有需要将统计结果进行存储,这里我也选用了线程安全的HashMap

    private ConcurrentHashMap<String, Integer> mCountResult;

    这个Map的key表示文件种类,value表示该类文件的数目,由于涉及到多线程访问,所以选用了线程安全的ConcurrentHashMap

    5 . 多线程问题,这里我选用了固定线程数目的线程池,最大线程数目是CPU核心数

    final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());

    6 . 数据传递问题,由于Android不能在子线程更新UI,所以这里需要传入Handler,将最终统计结果传递到UI线程并显示

    三、实战编码

    首先放上代码

    
    /**
     * Created by 尚振鸿 on 17-12-16. 14:26
     * mail:szh@codekong.cn
     * 扫描文件并统计工具类
     */
    
    public class ScanFileCountUtil {
        //扫描目录路径
        private String mFilePath;
    
        //各个分类所对应的文件后缀
        private Map<String, Set<String>> mCategorySuffix;
        //最终的统计结果
        private ConcurrentHashMap<String, Integer> mCountResult;
        //用于存储文件目录便于层次遍历
        private ConcurrentLinkedQueue<File> mFileConcurrentLinkedQueue;
        private Handler mHandler = null;
    
        public void scanCountFile() {
            if (mFilePath == null) {
                return;
            }
            final File file = new File(mFilePath);
    
            //非目录或者目录不存在直接返回
            if (!file.exists() || file.isFile()) {
                return;
            }
            //初始化每个类别的数目为0
            for (String category : mCategorySuffix.keySet()) {
                //将最后统计结果的key设置为类别
                mCountResult.put(category, 0);
            }
    
            //获取到根目录下的文件和文件夹
            final File[] files = file.listFiles(new FilenameFilter() {
                @Override
                public boolean accept(File file, String s) {
                    //过滤掉隐藏文件
                    return !file.getName().startsWith(".");
                }
            });
            //临时存储任务,便于后面全部投递到线程池
            List<Runnable> runnableList = new ArrayList<>();
            //创建信号量(最多同时有10个线程可以访问)
            final Semaphore semaphore = new Semaphore(100);
            for (File f : files) {
                if (f.isDirectory()) {
                    //把目录添加进队列
                    mFileConcurrentLinkedQueue.offer(f);
                    //创建的线程的数目是根目录下文件夹的数目
                    Runnable runnable = new Runnable() {
                        @Override
                        public void run() {
                            countFile();
                        }
                    };
                    runnableList.add(runnable);
                } else {
                    //找到该文件所属的类别
                    for (Map.Entry<String, Set<String>> entry : mCategorySuffix.entrySet()) {
                        //获取文件后缀
                        String suffix = f.getName().substring(f.getName().indexOf(".") + 1).toLowerCase();
                        //找到了
                        if (entry.getValue().contains(suffix)) {
                            mCountResult.put(entry.getKey(), mCountResult.get(entry.getKey()) + 1);
                            break;
                        }
                    }
                }
            }
    
            //固定数目线程池(最大线程数目为cpu核心数,多余线程放在等待队列中)
            final ExecutorService executorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
            for (Runnable runnable : runnableList) {
                executorService.submit(runnable);
            }
            //不允许再添加线程
            executorService.shutdown();
            //等待线程池中的所有线程运行完成
            while (true) {
                if (executorService.isTerminated()) {
                    break;
                }
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            //传递统计数据给UI界面
            Message msg = Message.obtain();
            msg.obj = mCountResult;
            mHandler.sendMessage(msg);
        }
    
        /**
         * 统计各类型文件数目
         */
        private void countFile() {
            //对目录进行层次遍历
            while (!mFileConcurrentLinkedQueue.isEmpty()) {
                //队头出队列
                final File tmpFile = mFileConcurrentLinkedQueue.poll();
                final File[] fileArray = tmpFile.listFiles(new FilenameFilter() {
                    @Override
                    public boolean accept(File file, String s) {
                        //过滤掉隐藏文件
                        return !file.getName().startsWith(".");
                    }
                });
    
                for (File f : fileArray) {
                    if (f.isDirectory()) {
                        //把目录添加进队列
                        mFileConcurrentLinkedQueue.offer(f);
                    } else {
                        //找到该文件所属的类别
                        for (Map.Entry<String, Set<String>> entry : mCategorySuffix.entrySet()) {
                            //获取文件后缀
                            String suffix = f.getName().substring(f.getName().indexOf(".") + 1).toLowerCase();
                            //找到了
                            if (entry.getValue().contains(suffix)) {
                                mCountResult.put(entry.getKey(), mCountResult.get(entry.getKey()) + 1);
                                //跳出循环,不再查找
                                break;
                            }
                        }
                    }
                }
            }
        }
    
        public static class Builder {
            private Handler mHandler;
            private String mFilePath;
            //各个分类所对应的文件后缀
            private Map<String, Set<String>> mCategorySuffix;
    
            public Builder(Handler handler) {
                this.mHandler = handler;
            }
    
            public Builder setFilePath(String filePath) {
                this.mFilePath = filePath;
                return this;
            }
    
            public Builder setCategorySuffix(Map<String, Set<String>> categorySuffix) {
                this.mCategorySuffix = categorySuffix;
                return this;
            }
    
            private void applyConfig(ScanFileCountUtil scanFileCountUtil) {
                scanFileCountUtil.mFilePath = mFilePath;
                scanFileCountUtil.mCategorySuffix = mCategorySuffix;
                scanFileCountUtil.mHandler = mHandler;
                scanFileCountUtil.mCountResult = new ConcurrentHashMap<String, Integer>(mCategorySuffix.size());
                scanFileCountUtil.mFileConcurrentLinkedQueue = new ConcurrentLinkedQueue<>();
            }
    
            public ScanFileCountUtil create() {
                ScanFileCountUtil scanFileCountUtil = new ScanFileCountUtil();
                applyConfig(scanFileCountUtil);
                return scanFileCountUtil;
            }
        }
    }

    上面代码中关键的点都有注释或者是前面已经讲到了,下面说几点补充:

    1 . 必须要等所有线程运行结束才能向UI线程发送消息,这里使用了轮询的方式

    while (true) {
        if (executorService.isTerminated()) {
            break;
        }
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    2 . 由于上面的轮询会阻塞调用线程,所以调用应该放在子线程中

    3 . 上面工具类实例的创建使用到了建造者模式,不懂的可以看我的另一篇博客
    http://blog.csdn.net/bingjianit/article/details/53607856

    4 . 上面我创建的线程的数目是根目录下文件夹的数目,大家可以根据自己的需要调整

    四、方便调用

    下面简单说一下如何调用上面的代码

    private Handler mHandler = new Handler(Looper.getMainLooper()){
        @Override
        public void handleMessage(Message msg) {
            //接收结果
            Map<String, Integer> countRes = (Map<String, Integer>) msg.obj;
            //后续显示处理
        }
    };
    /**
     * 扫描文件
     */
    private void scanFile(){
        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            return;
        }
        final String path = Environment.getExternalStorageDirectory().getAbsolutePath();
    
        final Map<String, Set<String>> CATEGORY_SUFFIX = new HashMap<>(FILE_CATEGORY_ICON.length);
        Set<String> set = new HashSet<>();
        set.add("mp4");
        set.add("avi");
        set.add("wmv");
        set.add("flv");
        CATEGORY_SUFFIX.put("video", set);
    
        set.add("txt");
        set.add("pdf");
        set.add("doc");
        set.add("docx");
        set.add("xls");
        set.add("xlsx");
        CATEGORY_SUFFIX.put("document", set);
    
        set = new HashSet<>();
        set.add("jpg");
        set.add("jpeg");
        set.add("png");
        set.add("bmp");
        set.add("gif");
        CATEGORY_SUFFIX.put("picture", set);
    
        set = new HashSet<>();
        set.add("mp3");
        set.add("ogg");
        CATEGORY_SUFFIX.put("music", set);
    
        set = new HashSet<>();
        set.add("apk");
        CATEGORY_SUFFIX.put("apk", set);
    
        set = new HashSet<>();
        set.add("zip");
        set.add("rar");
        set.add("7z");
        CATEGORY_SUFFIX.put("zip", set);
    
        //单一线程线程池
        ExecutorService singleExecutorService = Executors.newSingleThreadExecutor();
        singleExecutorService.submit(new Runnable() {
            @Override
            public void run() {
                //构建对象
                ScanFileCountUtil scanFileCountUtil = new ScanFileCountUtil
                        .Builder(mHandler)
                        .setFilePath(path)
                        .setCategorySuffix(CATEGORY_SUFFIX)
                        .create();
                scanFileCountUtil.scanCountFile();
            }
        });
    }

    五、后记

    刚开始我是采用单线程扫描,扫描时间差不多是3分钟,经过使用多线程以后,扫描时间缩短到30-40秒。对了,上面的程序要想在Android中顺利运行还需要添加访问SD卡的权限和注意Android6.0的动态权限申请。

    如果觉得不错,可以关注我,也可以去GitHub看看我的文件管理器,正在不断完善中,地址:
    https://github.com/codekongs/FileExplorer/

    展开全文
  • Linux 统计文件/文件夹的个数

    万次阅读 2016-09-22 15:15:51
    Linux 统计文件/文件夹的个数主要参考这里统计某文件夹下文件的个数 ls -l |grep “^-“|wc -l统计文件夹下文件的个数,包括子文件夹里的 ls -lR|grep “^-“|wc -l统计某文件夹下目录的个数 ls -l |grep “^d”...

    Linux 统计文件/文件夹的个数

    本篇博客主要参考自这里

    统计某文件夹下文件的个数

    ls -l |grep "^-"|wc -l

    统计文件夹下文件的个数,包括子文件夹里的

    ls -lR|grep "^-"|wc -l

    统计某文件夹下目录的个数

    ls -l |grep "^d"|wc -l

    统计文件夹下目录的个数,包括子文件夹里的

    ls -lR|grep "^d"|wc -l

    如统计/home/archer目录(包含子目录)下的所有js文件则:

    ls -lR /home/archer|grep js|wc -l 或 ls -l "/home/archer"|grep "js"|wc -l

    注意

    ls -lR #长列表输出该目录下文件信息(R代表recursive,对子文件夹进行搜索,可能是目录、链接、设备文件等)
    grep "^-" #将长列表输出信息过滤一部分,只保留一般文件;如果只保留目录就是 ^d
    wc -l #统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数

    展开全文
  • grep -c 统计文件中某字符串的个数

    万次阅读 2018-08-21 19:39:24
    想要知道文件某个字符串出现的个数, 比如日志文件关键字的个数,可以使用grep -c 案例: 1、返回一个文件字符串的个数: grep -c keyword 文件名 ...4、查找 当前目录下以xxx结尾的文件,统计文件中xx...
  • 本文主要实现功能:用c语言编写程序,实现从命令行传参输入要读入的文件,并动态分配用于保存文件数据内容的数组内存,统计文件中字符的个数,并将文件内容打印输出。 注 (1)本文统计字符个数的程序只针对字符...
  • 统计目录的个数和常规文件个数 输出的结果 即13个目录和8个常规文件 注意: 这里不是单引号,是顿号。
  • 统计文件中每个小写字母的个数

    千次阅读 2014-10-10 21:09:13
    题目:有一个文件a.txt,里面含有很多小写英文字符,请统计每个字符的个数,并输出。 #include #include using namespace std; int main() { char a[10]; int s[26]={0}; //以下读取磁盘文件中的数据 ...
  • 【python】统计文件中的字符串数目

    万次阅读 2017-11-02 14:10:43
    统计文件中的字符 一个txt文件已知数据格式为: C4D/su C4D/max/AE 统计每个字段出现的次数,比如C4D、maya
  • Linux统计文件夹中文件个数

    万次阅读 2016-10-10 15:10:12
    统计文件夹中文件个数ll | grep ^- | wc -l粗略统计ll | wc -l结果=文件夹个数+文件个数+1统计文件夹文件夹的个数ll | grep ^d | wc -l查看文件夹的占用空间du --max-depth=1 -h folder/在文件夹查找某些/个...
  • 下面程序用变量count统计文件中字符的个数 #include <stdio.h> // 下面程序用变量count统计文件中字符的个数 int main() { FILE *fp; long count = 0; if ((fp = fopen("letter.dat", "r")) == NULL) // 1...
  • shell脚本统计文件中单词的个数

    千次阅读 2017-04-25 10:43:29
    shell脚本统计文件中单词的个数 一、方案 http://www.cnblogs.com/youxuguang/p/5917215.html 方法一: (1)cat file|sed 's/[,.:;/!?]/ /g'|awk '{for(i=1;i;i++)array[$i]++;}END{for(i in array) print i,...
  • 统计文件中每个字母的个数

    千次阅读 2017-07-24 21:01:34
    1.将文件中的每一行作为字符串读取。 2.使用字符串的lower()函数将大写字符转换成小写。 3.创建含有26个整型值得名为counts 的列表,每个值是对每个字母出现次数的统计,比如 counts[1]统计的是‘b’出现的次数。 ...
  • //c++ 统计文件中相同字符串的个数 #include #include #include #include using namespace std; int main(int argc,char*argv[]) { map mapA; ifstream myfile; //打开文件 myfile.open("1...
  • 声明:这些内容主要是面向C语言的初学者,尤其是正在学习C语言的学生。  C语言进行底层开发时...例:统计一个英文混合的文本文件“maden.txt”汉字的个数。 分析:  文本文件中每个英文字符占一个字节,最高位
  • python 统计文件中单词数目

    千次阅读 2015-04-12 15:30:00
    with open('E:/Demo/abc.txt','r') as f: line_count=0 word_count=0 cha_count=0 for line in f: words=line.split() line_count+=1 word_count+=len(words) cha_count+=len(line) ...prin
  • 统计文件中字符个数

    万次阅读 2015-09-02 09:49:22
    所谓“文件”是指一组相关数据的有序集合。这个数据集有一个名称 ...ASCII文件也称为文本文件,这种文件在磁盘存放时每个字符对应一个 字节,用于存放对应的ASCII码。例如,数字5678的存储形式
  • 统计Txt文件中数字的个数

    千次阅读 2016-08-16 21:55:16
    /***********************.../*功能:统计txt文件中16进制数字个数。PS最后一个数字后不能有空格,数字之间是空格不是逗号 /*日期:160816 /*作者: /*结论: /***************************************************
  • 用c语言统计文件中某个汉字的个数

    千次阅读 2014-11-20 21:21:54
    printf("文件打开失败!\n"); exit(0); } printf("输入统计的汉字:"); scanf("%s", cSearch); fgets(cSource, N, fp); for(i = 0; i (int)strlen(cSource); i++) { if(cSource[i] == cSearch[0] && cSource...
  • linux统计文件数目

    万次阅读 2019-04-16 10:19:08
    指令为 ...虽然博客解释的很好但没有亲自体验,理解起来总不是很深刻 以下面的文件夹为例: 1. ls -l 指令ls -l的作用是 2. grep ^- grep ^-的作用是过滤每行开头的符号-,^-是正则表达...
  • linux统计文件夹中文件数目

    千次阅读 2010-06-04 17:50:00
    只保留一般文件,如果只保留目录就是 ^dwc -l 统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件个数。第二种方法:find ./ -...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 157,953
精华内容 63,181
关键字:

统计文件系统中文件数目