Java读取txt文件中指定行内容
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获取文本内容与读取文本指定行数内容浅析(java)
在此项目中直接套用以前工程中获取文本内容的方法发现一直提示“数组下标越界”,通过分析和查找得出以下心得:
获取文本内容:
private static final String CHART_PATH ="D://data3";
public static void main(String[] args) throws
RowsExceededException,WriteException, BiffException{
try {
readFileByLines(CHART_PATH+".txt");
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
public static void readFileByLines(String fileName) throws
IOException,RowsExceededException,WriteException{
//打开文件
WritableWorkbook book = Workbook.createWorkbook(
new File(CHART_PATH+".xls"));
WritableSheet sheet = book.createSheet("看我", 0);
//读取txt文件内容
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis,"GBK");
BufferedReader reader = null;
try {
reader = new BufferedReader(isr);
String temString = null;
//一次读入一行,以null结束
int i = 0;
while((temString = reader.readLine())!= null){
System.out.println("+++++++"+temString);
String[] str = temString.split(",");
for(int j= 0;j Label label = new Label(j,i,str[j]); sheet.addCell(label); // System.out.println(str[j]); System.out.println("----------"+str[j]); } i++; } //写入 book.write(); try { book.close(); } catch (WriteException e) { // TODO: handle exception e.printStackTrace(); } reader.close(); } catch (IOException e) { // TODO: handle exception e.printStackTrace(); }finally{ if(reader!=null){ reader.close(); } } } 从以上代码可以看出是每行读取数据然后存入新的数组中,按道理说可以通过类似int a =0; a =Integer.parseInt(str[0]); 来获取新数组中的第一个元素,但是此时工程会一直报 ng.ArrayIndexOutOfBoundsException: 0, 说明此时不能直接这么从新数组中获取数据 获取某一行文本信息: 为了获取想要的目标数据可以这么做: package testTxt; import java.io.*; public class Test { /** * @param args */ public static void main(String[] args) { // 指定读取的行号 int lineNumber =5; // 读取文件 File sourceFile = new File("D://data3.txt"); try { // 读取指定的行 readAppointedLineNumber(sourceFile, lineNumber); // readAppointedLineNumber(sourceFile, lineNumber); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 读取文件指定行。 static void readAppointedLineNumber(File sourceFile, int lineNumber) throws IOException { FileReader in = new FileReader(sourceFile); LineNumberReader reader = new LineNumberReader(in); String s = ""; if (lineNumber <= 0 || lineNumber > getTotalLines(sourceFile)) { System.exit(0); } int lines = 0; while (s != null) { lines++; s = reader.readLine(); if((lines - lineNumber) == 0) { System.out.println(s+"wo zai zhe"); int a =0; a =Integer.parseInt(s); System.out.println(a+"MMMMMMMMMMMMMMMMMMMMM"); System.exit(0); } } reader.close(); in.close(); } // 文件内容的总行数。 static int getTotalLines(File file) throws IOException { FileReader in = new FileReader(file); LineNumberReader reader = new LineNumberReader(in); String s = reader.readLine(); int lines = 0; while (s != null) { lines++; s = reader.readLine(); if(lines>=2){