如何在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];