我可以创建一个返回一个bufferedwriters数组的方法

时间:2012-07-26 18:17:42

标签: java android eclipse testing robotium

我正在编写一个测试程序,并在其中将结果写入2个不同的文件。 1个特定测试文件和1个文件,用于保存所有结果的总计。我没有为我所拥有的20个测试中的每一个编写逻辑,而是想创建一个返回BufferedWriters数组的方法。这可能吗?

以下是我一直在使用的代码:

    public BufferedWriter[] createTestFile(String fileName, String fileName2) throws IOException{
    File directory = null;
    File photoDirectory = null;
    BufferedWriter bufWrite=null; 
    BufferedWriter bw2 = null;

    BufferedWriter[] bw[]=null; 

    SimpleDateFormat photoFormat = new SimpleDateFormat("ddMMyy-hhmmss");

    new SimpleDateFormat("MMMddyy-hhmmss");
    /*
     * This sections checks the phone to see if there is a SD card. if
     * there is an SD card, a directory is created on the SD card to
     * store the test log results. If there is not a SD card, then the
     * directory is created on the phones internal hard drive
     */
    // if there is no SD card
    if (Environment.getExternalStorageState() == null) {
        directory = new File(Environment.getDataDirectory()
                + "/RobotiumTestLog/");
        photoDirectory = new File(Environment.getDataDirectory()
                + "/Robotium-Screenshots/");

        // if no directory exists, create new directory
        if (!directory.exists()) {
            directory.mkdir();
        }

        // if phone DOES have sd card
    } else if (Environment.getExternalStorageState() != null) {
        // search for directory on SD card
        directory = new File(Environment.getExternalStorageDirectory()
                + "/RobotiumTestLog/");
        photoDirectory = new File(
                Environment.getExternalStorageDirectory()
                        + "/Robotium-Screenshots/");

        // if no directory exists, create new directory to store test
        // results
        if (!directory.exists()) {
            directory.mkdir();
        }
    }// end of SD card checking

    /*
     * Checks for existing test logs, and if they exist, they are
     * deleted, creating a new test log for each testing method
     */
    File logResults = new File(directory, fileName);
    File totLogRes = new File(directory, fileName2); 
    if (logResults.exists()) {
        logResults.delete();
    }
    if (!logResults.exists()) {
        logResults.createNewFile();
    }
    //check total Log
    if (!totLogRes.exists()) {
        totLogRes.createNewFile();
    }
    /*
     * This creates the writing stream to log the test results This
     * stream MUST be closed, using bw.close(), for the test results to
     * show on the log. If the stream is not closed, when you open the
     * text file that the results are stored in, the page will be blank.
     */

        //This is where I have a problem. I'm not sure how to return an array of bufferedwriters
    bufWrite = new BufferedWriter(new FileWriter(logResults, true));
    bw2= new BufferedWriter(new FileWriter(totLogRes, true)); 

    bw[0]=bufWrite; <---- get an error here saying I can't go from array to bw.

    return bw[]; 

我尝试了几种不同的方式,但是我遇到了错误。我想知道是否有人能指出我正确的方向。

2 个答案:

答案 0 :(得分:1)

您应该将bw的声明更改为:

BufferedWriter[] bw=new BufferedWriter[2]; 

现在,您正在声明BufferedWriter的数组和数组。你没有分配它......

此外,return语句应为

return bw;

答案 1 :(得分:1)

有几个错误:

BufferedWriter[] bw[]=null;

要定义数组,它就像int a[];,所以

BufferedWritter bw[] = null;

此外,数组是一个对象,您需要使用new

创建它

BufferedWritter bw [] = new BufferedWriter [2];