我有一段代码 -
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
中显示的内容答案 0 :(得分:4)
您只是阅读文件的第一个行 ...这不是252个字符长。看起来你真的想要阅读整个文件然后修改它。
Guava在Files
中有一些有用的方法可以一次读取整个文件。
(总的来说,这感觉就像一个非常脆弱的方法......你有多大的信心,分裂点将始终是HTML中的252个字符?)