获取java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:(无法弄清楚)

时间:2011-04-27 12:25:54

标签: java inputstream java.util.scanner

我有一段代码 -

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     at java.lang.String.substring(Unknown Source)     在com.lg.palette.elementEditFactory.RAF.main(RAF.java:25)

代码有什么问题 我的主要目标是获取第二个test.txt

中显示的内容

1 个答案:

答案 0 :(得分:4)

您只是阅读文件的第一个 ...这不是252个字符长。看起来你真的想要阅读整个文件然后修改它。

GuavaFiles中有一些有用的方法可以一次读取整个文件。

(总的来说,这感觉就像一个非常脆弱的方法......你有多大的信心,分裂点将始终是HTML中的252个字符?)