ReadFiles

import java.io.*;
import java.util.ArrayList;
import java.util.HashSet;

import java.util.regex.Pattern;
import java.util.regex.Matcher;  

public class ReadFiles
{

    //返回:给定目录下文件的个数
    public static int GetFileNum(String pathName)
    {
        File file=new File(pathName);
        File[] nextFiles=file.listFiles();
        return nextFiles.length;
    }

    //返回:一个关于所有文件名的列表
    public static ArrayList<String> GetFileName(String pathName) throws IOException
    {
        File fileHam=new File(pathName+"\\ham");
        File fileSpam=new File(pathName+"\\spam");

        File[] hamFiles=fileHam.listFiles();
        File[] spamFiles=fileSpam.listFiles();

        ArrayList<String> fileName=new ArrayList<String>();

        for(int i=0;i<hamFiles.length;i++)
        {
            fileName.add(hamFiles[i].getPath());
        }

        for(int i=0;i<spamFiles.length;i++)
        {
            fileName.add(spamFiles[i].getPath());
        }

        return fileName;
    }

    //返回:一个关于所有文件单词的列表
    public static ArrayList<String> GetWordsList(String pathName) throws IOException
    {
        File fileHam=new File(pathName+"\\ham");
        File fileSpam=new File(pathName+"\\spam");

        File[] hamFiles=fileHam.listFiles();
        File[] spamFiles=fileSpam.listFiles();

        HashSet<String> set=new HashSet<String>();
        for(int i=0;i<hamFiles.length;i++)
        {
            BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(hamFiles[i])));
            String s=null;
            while((s=in.readLine())!=null)
            {

                String sMatch = "\\d+.\\d+|\\w+|\\$";
                Pattern  pattern=Pattern.compile(sMatch);
                Matcher  ma=pattern.matcher(s);  

                while(ma.find())
                {
                    set.add(ma.group().toLowerCase());
                } 

            }
            in.close();
        }

        for(int i=0;i<spamFiles.length;i++)
        {
            BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(spamFiles[i])));
            String s=null;
            while((s=in.readLine())!=null)
            {

                String sMatch = "\\d+.\\d+|\\w+|\\$";
                Pattern  pattern=Pattern.compile(sMatch);
                Matcher  ma=pattern.matcher(s);  

                while(ma.find())
                {
                    set.add(ma.group().toLowerCase());
                } 

            }
            in.close();
        }

        ArrayList<String> wordList=new ArrayList<String>(set);
        return wordList;

    }

    //返回:一个关于单词的处理而得的矩阵
    public static ArrayList<MyArray> GetMatrix(String pathName,ArrayList<String> wordList) throws IOException
    {
        ArrayList<MyArray> trainMatrix=new ArrayList<MyArray>();

        File fileHam=new File(pathName+"\\ham");
        File fileSpam=new File(pathName+"\\spam");

        File[] hamFiles=fileHam.listFiles();
        File[] spamFiles=fileSpam.listFiles();

        for(int i=0;i<hamFiles.length;i++)
        {
            BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(hamFiles[i])));
            MyArray wordArray=new MyArray(wordList.size());
            wordArray.InitArray(0);
            String s=null;
            while((s=in.readLine())!=null)
            {

                String sMatch = "\\d+.\\d+|\\w+|\\$";
                Pattern  pattern=Pattern.compile(sMatch);
                Matcher  ma=pattern.matcher(s);  

                while(ma.find()){
                    int pos=wordList.indexOf(ma.group().toLowerCase());
                    if(pos!=-1)
                        wordArray.SetPos(pos);

                } 

            }
            trainMatrix.add(wordArray);
            in.close();
        }

        for(int i=0;i<spamFiles.length;i++)
        {
            BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(spamFiles[i])));
            MyArray wordArray=new MyArray(wordList.size());
            wordArray.InitArray(0);
            String s=null;
            while((s=in.readLine())!=null)
            {

                String sMatch = "\\d+.\\d+|\\w+|\\$";
                Pattern  pattern=Pattern.compile(sMatch);
                Matcher  ma=pattern.matcher(s);  

                while(ma.find()){
                    int pos=wordList.indexOf(ma.group().toLowerCase());
                    if(pos!=-1)
                        wordArray.SetPos(pos);

                } 

            }
            trainMatrix.add(wordArray);
            in.close();
        }

        return trainMatrix;

    }
}
时间: 2024-10-09 04:07:38

ReadFiles的相关文章

【第三章】BCMS中应用的文件系统

因为我的mac 上mysql 的问题,造成我选择file和mongodb来做数据的持久化操作. mongodb的话,写了一小部分,已经可是可以使用,但是存在问题,所以决定先写file来进行数据操作. 之前我和小伙伴思考和讨论过这个问题,用小文件和数据库储存文件哪个会更快,数据库保存数据的方式应该和文件系统的方式一致,至于效率有待验证. 既然要使用文件系统去做数据的存储,基础的文件读取修改等方法应该写的通用,我现在还在修改这部分,因为已经在应用中发现了问题,这里先贴出来. 这里是主文件file.r

网络电视精灵的框架及关键代码

效果: 编写节目类 属性:播出时间.时段.名称.视频路径 编写频道基类 属性:频道名称.频道节目单位置.节目列表 抽象方法:Fetch() 编写频道子类 继承“频道基类”,实现Fetch()[只写方法声明] 编写频道工厂类 方法:实现创建频道子类 第一步.创建几个类: 01:创建一个电视类(TvProgram) 该类主要负责定义节目的属性,为后续从xml文件(FullChannnels.xml)中读取的内容提供存放位置. 属性为: public DateTime PlayTime { get;

IO包中的其他类总结

一.PrintStream和PrintWriter PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式. PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节. 在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类. 1 /** 2 * PrintStream 3 * 1.提供了打印方法,可以对多种类型值进行打印,并保持数据的原有格式 4 * 2.它不抛IOException 5 * 6 * 构造函数 接受三种类型的值

JavaScript异步编程设计快速响应的网络应用

JavaScript已然成为了多媒体.多任务.多内核网络世界中的一种单线程语言.其利用事件模型处理异步触发任务的行为成就了JavaScript作为开发语言的利器.如何深入理解和掌握JavaScript异步编程变得尤为重要!!!<JavaScript异步编程设计快速响应的网络应用>提供了一些方法和灵感. 一.深入理解JavaScript事件 1. 事件的调度 JavaScript事件处理器在线程空闲之前不会运行(空闲时运行). var start = new Date(); setTimeout

C#读写共享目录

C#读写共享目录 该试验分下面步骤: 1.在server设置一个共享目录.在这里我的serverip地址是10.80.88.180,共享目录名字是test,test里面有两个文件:good.txt和bad.txt,訪问权限,username是admin,password是admin. 2.新建一个webapplication项目,在前台页面加一个listbox.ID是ListBox1. 3.加入后台代码例如以下:当中包括的功能是读文件.这里以读good 文件为例:写文件,这里以写bad文件为例.

HDFS序列化

序列化 1)什么是序列化 将结构化对象转换成字节流以便于进行网络传输或写入持久存储的过程. 2)什么是反序列化 将字节流转化为一系列结构化对象的过程. 序列化的用途 1)作为一种持久化格式 2)作为一种通信的数据格式 3)作为一种数据拷贝.克隆机制 序列化的特征: 1)紧凑:Hadoop中最稀缺的资源是宽带,所以紧凑的序列化机制可以充分的利用宽带. 2)快速:通信时大量使用序列化机制,因此,需要减少序列化和反序列化的开销. 3)可扩展:随着通信协议的升级而可升级. 4)互操作:支持不同开发语言的

代码记录

前言 趁时间没事可做,今天下午索性做些无聊的事情. 1.根据规则将搜索表单内提交的有效数据封装成搜索字符串返回 form表单提交时,后台可以直接接受表单提交的数据,但有时我们如果要根据自己的需求去接受对应的控件内容,这时我们就要重新编译net内部的数据.以下代码是对筛选条件的处理. /// <summary> /// 根据规则将搜索表单内提交的有效数据封装成搜索字符串返回 /// </summary> /// <param name="httpRequest&quo

小学生四则运算APP核心代码公布

Mainactivity类: package com.example.XXSCYS; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.ap

POI读取Word与Excel

import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.File; import java.io.OutputStreamWriter; impo