Получение java.lang.StringIndexOutOfBoundsException: String index вне диапазона: (не в состоянии понять это) - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть кусок кода -

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

import org.eclipse.core.runtime.Platform;

public class RAF {

    public static void main(String[] args) {

          File file = new File("test.txt");
          Scanner scanner;
        try {
            scanner = new Scanner(file).useDelimiter("\n");
            String line = scanner.next();
              String newLine = line.substring(0, 252) + "<input type=\"button\" value = \"abhishek\" />" + line.substring(252);
              FileWriter writer = new FileWriter(file);
              writer.write(newLine);
              writer.close();

        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

и файл test.txt - -

> <!DOCTYPE html PUBLIC "-//W3C//DTD
> HTML 4.01 Transitional//EN"
> "http://www.w3.org/TR/html4/loose.dtd">
> <html> <head> <meta
> http-equiv="Content-Type"
> content="text/html;
> charset=ISO-8859-1"> <title>Insert
> title here</title> </head> <body>
> 
> <form><input></form> </body> </html>

Общая длина test.txt составляет 285, и я хочу добавитьсодержимое в 252 месте, так что вывод будет -

> "http://www.w3.org/TR/html4/loose.dtd">
> <html> <head> <meta
> http-equiv="Content-Type"
> content="text/html;
> charset=ISO-8859-1"> <title>Insert
> title here</title> </head> <body>
> 
> <form>**<input type="button" value =
> "abhishek"/>**<input></form> </body>
> </html>

Но я получаю исключение - Исключение в потоке "main" java.lang.StringIndexOutOfBoundsException: Строковый индекс вне диапазона: 252 в java.lang.String.substring (Неизвестный источник) по адресу com.lg.palette.elementEditFactory.RAF.main (RAF.java:25)

В чем проблема с кодом? Моя главная цель - получить содержимое, как показано на второмtest.txt

1 Ответ

4 голосов
/ 27 апреля 2011

Вы читаете только первую строку файла ... длиной не 252 символа.Похоже, вы действительно хотите прочитать весь файл, а затем изменить его.

Guava имеет несколько полезных методов в Files для чтения всего файла за один раз.

(В целом это выглядит довольно хрупким подходом, хотя ... насколько вы уверены, что точка разделения всегда будет 252 символами в HTML?)

...