前言序锦


好久没来写博客了丫丫,心里痒痒的^_^,今天来一个关于Java StringBuffer+Random结合的例子分享给大家,这是我在做文档的余弦相似度分析中遇到的一个问题……话不多说,直接进入正题:

题述

题目详述:通过Java来从一个本地含有很多文件的文件夹下面获取文件路径,然后通过Random随机不重复选择一个文件路径,并通过字符串流的形式读取出来,并显示到控制台上面,如果你会写界面的话,还可以写到界面上,还是比较炫酷的哟!

分析

1,我们要想一下如何获取一个文件夹下面的所有文件的路径呢?
2,我们要想一下如何来从文件路径随机获取一个路径,注意;这里还是要不重复获取,这个主要是我在进行余弦距离比较的时候不能有两个相同的文档进行比较
3,我们要想一下如何来通过StringBuffer来进行换行输出到控制台上或者Java界面上(后者仅仅进行拓展)?

采用方法

1,问题1嘛,其实也还是挺简单的,这里就给大家留一个小谜题,大家自己去想一下如何获取文件路径,并保存在一个String数组中;
2,问题2嘛,方法也有很多,我就直接用的是Random来实现,大家也可以用自己的方法;
3,问题3嘛,其实也比较简单,用输入输出流再加上StringBuffer的append方法追加到一个StringBuffer中,然后再转换(toString)为字符串String就行,最后再System.out.println(String)就行了(这里主要是为了封装的要好一些,个人习惯哈哈,完全可以不要封装,直接输出也可以)。

代码奉上

问题1代码省略,大家自行研究……

问题2代码:
//随机获取一个文件路径,七中flg_1为文件的总数目,为int型的
public static String RandomFile(){
        int random_index = (int) (Math.random()*flg_1);
        String str = null;
        str = FileName[random_index];
        FileName[random_index] = FileName[flg_1 - 1];
        flg_1 --;
        return str;
    }
//解析:这里我们要实现不重复获取,也就是要获取一个就要将这个文件的路径从总数中减去,哈哈,学过C语言的都能看懂是那两步吧,没错,就是这两步:
FileName[random_index] = FileName[flg_1 - 1];
flg_1 --;

问题3代码:
public static StringBuffer getDocuments() throws IOException {
        String filename = Indexer.RandomFile();//获取随机文件路径
        FileInputStream fis = new FileInputStream(filename);//要读的文件
        InputStreamReader isr = new InputStreamReader(fis);//字符流
        BufferedReader br = new BufferedReader(isr);//缓冲
        String line = null;
        StringBuffer Str = new StringBuffer();
        while((line = br.readLine()) != null){//读取的字符不等于空
            Str.append(line);//一行一行的存入字符串流中
            Str.append("\n");
            //System.out.println(line + "\n");
        }
        br.close();
        if(Str.length()!=0)
            return Str;
        return null;
    }
PS:好了,今天的分享就到这里了哟,欢迎大家来简评,有什么不明白的,也可以留言