您的位置:首页 > 其它

读文件&计算方法执行时间的实例

2012-07-24 21:55 393 查看
学习了几个关于java读写文件和计算方法执行时间的程序。

一、关于读文件的实例

第一个是读一个指定目录中.txt文件的程序:

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
//import java.io.*;
public class FileReaderSample {
public static void main(String[] args) {
read("….txt"); }
public static void read(String file) {
//创建一个File类,并判断一下指定文件是否存在
String s = null;
//检验内容是否为空
StringBuffer sb = new StringBuffer();
File f = new File(file);
if (f.exists()) {
System.out.println("该文件存在");
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
/*创建一个FileInputStream类,从文件系统中的某个文件中获取输入字节。
* 把读到的字节流交给InputStreamReader对象来处理。*/
while ((s = br.readLine()) != null) {
/*用BufferedReader类来处理读到的字符集合
* readLine()方法可以读取当前的一行字符
* 把这些字符串都放进一个StringBuffer中*/
sb.append(s); }
//字符串"null"追加到此字符序列
System.out.println(sb);
br.close();}
catch (Exception e) {
e.printStackTrace();}
//打印错误
}
else { System.out.println("该文件不存在!"); }
}
}


还有一个程序是:写一个Java类,读取自己,并按照原来的格式输出到控制台。

import java.io.*;
public class TestFile{
public static void main(String args[]) throws IOException {
/*throws IOException表示此方法有抛出IOException异常的可能性。
*只要此方法的某些代码可能抛出异常,就必须显式处理,或者(try...catch),或者抛出*/
File f = new File("C:\Program Files\Java\TestFile.java");
LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(f));
StringBuffer sb = new StringBuffer();
//Constructs a string buffer with no characters in it
//and an initial capacity of 16 characters
String lineStr = lineNumberReader.readLine();
//读第一行
while (lineStr != null) {
sb.append(lineStr).append("\n");
//每读一行,加一个回车
lineStr=lineNumberReader.readLine();
}
lineNumberReader.close();
System.out.println(sb.toString());
}
}


错误: 找不到或无法加载主类 TestFile

程序运行错误:

?检查了jdk与java的版本匹配问题,也修改了环境变量,但是输出还是有错误。。。

二、计算方法执行时间

测试代码的运行时间,网上的总结有两种:

1、以毫秒为单位计算

long startTime=System.currentTimeMillis(); //获取开始时间
doSomeThing(); //测试的代码段
long endTime=System.currentTimeMillis(); //获取结束时间
System.out.println("程序运行时间: "+(end-start)+"ms");


2、以纳秒为单位计算

long startTime=System.nanoTime(); //获取开始时间
doSomeThing(); //测试的代码段
long endTime=System.nanoTime(); //获取结束时间
System.out.println("程序运行时间: "+(end-start)+"ns");


public class StopWatch {
public StopWatch()
{
reset();
}
public void start()
{
if (isRunning) return;
isRunning = true;
startTime = System.currentTimeMillis();
//以毫秒为单位返回当前时间
}
public void stop()
{
if (!isRunning) return;
isRunning = false;
long endTime = System.currentTimeMillis();
elapsedTime = elapsedTime + endTime - startTime;
//两时间相减得运行时间
}
public long getElapsedTime()
{
if (isRunning)
{
long endTime = System.currentTimeMillis();
return elapsedTime + endTime - startTime;
//多次执行可得方法总的执行时间
}
else
return elapsedTime;
}
public void reset()
{
elapsedTime = 0;
isRunning = false;
}
private long elapsedTime;
//经过的时间
private long startTime;
private boolean isRunning;
}


完成读文件并计算每一个方法执行的平均时间的步骤分析:

(1~4均使用数组实现)

1、计算文件中出现的总方法数

先记录第一个出现的方法,再分析第二个,若与第一个方法相同,跳过,若不同则记录下来,同理再分析第三个方法,将其与第一、二个比较,若与其中一个相同则跳过,反之则记录下来,依此类推,分析第n个方法,将其与之前的n-1个比较,若有相同的则跳过,若比较到第n-1个仍不相同,则记录下来。

2、记录每个方法每次出现的时间

数组数据类型为浮点型

3、记录每个方法出现的次数

数组初始化为0

数组数据类型为整型

一个方法出现一次,则其记录次数的数组的相应下标所对应的整数加1

4、求和计算每个方法出现的总时间

n个数组分别求和,存入一个新的数组中

5、计算每个方法执行的平均时间

平均时间=总时间/总次数

读文件操作一共执行两次,第一次是计算出文件中出现的总方法数,第二次是计算出每个方法执行的平均时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: