我正在编写一个测试程序,并在其中将结果写入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[];
我尝试了几种不同的方式,但是我遇到了错误。我想知道是否有人能指出我正确的方向。
答案 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];