如何在android中使用FileWriter数组:java.lang.NullPointerException:尝试写入null数组

如何在android中使用FileWriter数组:java.lang.NullPointerException:尝试写入null数组,java,android,arrays,file,nullpointerexception,Java,Android,Arrays,File,Nullpointerexception,我有多个文件要写入,因此我尝试使用FileWriter和PrintWriter数组。我甚至用try-and-catch来包围这些语句,但应用程序仍然崩溃并给出错误: java.lang.NullPointerException:尝试写入空数组 这就是我所做的: 在主活动中类I声明了文件编写器的数组,以及 private FileWriter outStream[]; private PrintWriter printWriter[]; 在onCreate函数中,我执行了以下操作: try {

我有多个文件要写入,因此我尝试使用
FileWriter
PrintWriter
数组。我甚至用try-and-catch来包围这些语句,但应用程序仍然崩溃并给出错误:

java.lang.NullPointerException:尝试写入空数组

这就是我所做的: 在主
活动中
类I声明了
文件编写器的数组
,以及

private FileWriter outStream[];
private PrintWriter printWriter[];
onCreate
函数中,我执行了以下操作:

try {
           outStream[0] = new FileWriter(finalFile_Acc, true);
           printWriter[0]= new PrintWriter(outStream[0]);
     } catch (IOException e) {
           e.printStackTrace();
     }
try {
           outStream[1] = new FileWriter(finalFile_Gyro, true);
           printWriter[1]= new PrintWriter(outStream[1]);
    } catch (IOException e) {
           e.printStackTrace();
    }

PS:我不能在同一个位置声明和初始化
文件编写器
打印编写器

对于打印编写器,您应该这样使用它

    PrintWriter printWriter[];
    int numberOfPrintWriters = 10;

    StringWriter stringWriter = new StringWriter();
    printWriter = new PrintWriter[numberOfPrintWriters];

    //using first printWriter
    PrintWriter printWriter[0] = new PrintWriter(stringWriter);
     try {
        printWriter[0].write(str, 0, 26);
        //or
        printWriter[0].print("ZZZ");
    }catch(Exception e){
      e.printStackTrace();
    }finally {
        printWriter[0].close();
    }

    //Similarly you can use other printWriters in array using their index like printWriter[i]
  int numberOfFileWriters = 10;
  FileWriter fWriter[];
  fWriter = new FileWriter[numberOfFileWriters];
  try{
     //using first fileWriter
     fWriter[0] = new FileWriter(file, true);
     fWriter[0].write("content");
     fWriter[0].flush();

  }catch(Exception e){
      e.printStackTrace();
  }finally{
     fWriter[0].close();
  }

  //Similarly you can use other fWriters in array using their index like fWriter[i]
对于FileWriter,您可以这样使用它

    PrintWriter printWriter[];
    int numberOfPrintWriters = 10;

    StringWriter stringWriter = new StringWriter();
    printWriter = new PrintWriter[numberOfPrintWriters];

    //using first printWriter
    PrintWriter printWriter[0] = new PrintWriter(stringWriter);
     try {
        printWriter[0].write(str, 0, 26);
        //or
        printWriter[0].print("ZZZ");
    }catch(Exception e){
      e.printStackTrace();
    }finally {
        printWriter[0].close();
    }

    //Similarly you can use other printWriters in array using their index like printWriter[i]
  int numberOfFileWriters = 10;
  FileWriter fWriter[];
  fWriter = new FileWriter[numberOfFileWriters];
  try{
     //using first fileWriter
     fWriter[0] = new FileWriter(file, true);
     fWriter[0].write("content");
     fWriter[0].flush();

  }catch(Exception e){
      e.printStackTrace();
  }finally{
     fWriter[0].close();
  }

  //Similarly you can use other fWriters in array using their index like fWriter[i]
如果您想在externalSDCard中写入文件,则

File file = new File(Environment.getExternalStorageDirectory() + " \filename.txt");

它是这样工作的,但我想使用FileWriter和PrintWriter数组。请参阅使用PrintWriter和FileWriter数组的修改答案。好的,谢谢,这很有效。只需添加这两行outStream=newfilewriter[2];printWriter=新的printWriter[2];