【发布时间】:2016-09-06 04:30:24
【问题描述】:
我正在尝试使用此功能从 CSV 文件中删除一行:
public void borrarAlumno(String id) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(archivo));
StringBuffer sb = new StringBuffer("");
String line;
while ((line = br.readLine()) != null) {
//System.out.println(line.substring((5)));
if(!" ".equals(line) && line != null){
if(!line.substring(0, 6).equals(id)){
sb.append(line);
}
}
}
br.close();
FileWriter fw = new FileWriter(new File(archivo));
fw.write(sb.toString());
fw.close();
}
但我得到这个错误:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -5
at java.lang.String.substring(Unknown Source
文件的第一行是:Matricula,Nombre,Apellido。为什么我收到IndexOutOfBoundsException?
【问题讨论】:
-
你肯定有一个错误:
line != " "需要变成!" ".equals(line)。 -
仍然得到相同的异常@npinti
-
这并不能回答您关于子字符串的问题,但您可以使用
!line.startsWith(id)而不是!line.substring(0, 6).equals(id)以避免在检查您的条件时出现很多问题。