java从一个包含很多文件的文件夹下面随机读取一个文件,然后通过 StringBuffer原样(换行输出)到调试界面上)

HuaCode 2018-06-12 11:46:27
java从一个包含很多文件的文件夹下面随机读取一个文件,然后通过 StringBuffer原样(换行输出)到调试界面上),请问,各位有没有什么好的办法呢?
我用的这个方法感觉挺慢的,对于文件少的时候有用,多的时候就很卡了!
代码如下:
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");
}
br.close();
if(Str.length()!=0)
return Str;
return null;
}
RandomFile()是我写了一个随机获取一个文件路径的方法。
...全文
1066 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
多了肯定慢啊,非要6个字
  • 打赏
  • 举报
回复
FileInputStream fis = new FileInputStream(filename);//要读的文件 InputStreamReader isr = new InputStreamReader(fis);//字符流 流没关
  • 打赏
  • 举报
回复
引用 4 楼 HuaCode 的回复:
//随机不重复获取一个字符串数组中的字符串,flag_1为字符串数组的长度 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; }
https://blog.csdn.net/u010525970/article/details/52381730 看一下这篇文章,你用linkedlist效果会好一些,毕竟你里面有删除元素的操作。
  • 打赏
  • 举报
回复
引用 5 楼 HuaCode 的回复:
五楼,请问你这个是让我获取读取文件后的消耗的总时间吗?
你看一下,文件少的时候耗时以及文件多的时候消耗的时间,如果差别特别大那就是你的这个RandomFile方法效率低。先确认一下原因
stacksoverflow 2018-06-13
  • 打赏
  • 举报
回复
你这个方法之读取一个文件,和文件多少没关系,所以文件多引起的慢应该是应该是RandomFile()方法或其他IO问题。 把RandomFile()贴上来。
tianfang 2018-06-13
  • 打赏
  • 举报
回复
生产要求? 你的代码没有关闭文件,另外我认为主要原因是文件读写的IO慢
HuaCode 2018-06-13
  • 打赏
  • 举报
回复
五楼,请问你这个是让我获取读取文件后的消耗的总时间吗?
HuaCode 2018-06-13
  • 打赏
  • 举报
回复
//随机不重复获取一个字符串数组中的字符串,flag_1为字符串数组的长度 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; }
  • 打赏
  • 举报
回复
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
String filename = Indexer.RandomFile();
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
看看是这里好消耗多少时间。。。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧