私はこの機能をCSVファイルから行を消去しようとしている:なぜ私のJavaプロジェクトで.substring()がうまく動作しないのですか?
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
を取得していますか?
:このメソッドは、
String.startsWith
です。 – npintiでも同じことが起こる例外@npinti –
これは部分文字列に関する質問には答えませんが、 '!line.substring(0、6).equals(id)'の代わりに '!line.startsWith(id)あなたの状態をチェックするときに多くの問題を避けるために。 –