Java读取txt文件中指定行内容
Java读取TXT文本文件乱码解决方案
Java读取TXT文本文件乱码解决方案今天在解析一个文本文件的时候出现了乱码,以前从未遇到,花了点时间解决了,在此总结一下:首先,先看一下解析的代码:private String[] getProjectData(File file){String[] data = null;try {BufferedReader br = new BufferedReader(new FileReader(file));String str = br.readLine();data = str.split(”\t”);br。
close();}catch(FileNotFoundException e) {e.printStackTrace();}catch(IOException e) {e。
printStackTrace();}return data;}这个方法很简单,就是获取txt文件中的一行数据,然后转换为数组,我这个文本中只有一行。
就这种情况下获取到的str是乱码,我想出现乱码肯定是字符集编码的问题,然后自己新建了一个文本文档测试没有问题(开始用的文本时别的程序导出的),所以我估计是开始那个txt文件编码的问题,查看发现是Unicode编码(如何查看txt的编码呢,教你一个笨笨的办法:打开文件——另存为,然后看到最下面的编码,默认选择的就是当前文档的编码格式),问题就出现在这里.问题找到了就好解决了,修改代码为:private String[] getProjectData(File file){String[] data = null;try {BufferedReader br = new BufferedReader(newInputStreamReader(new FileInputStream(file),”UTF—16"));String str = br。
readLine();data = str。
Java读取TXT文件的多种方式
Java读取TXT文件的多种方式按行读取TXT文件package zc;import java.io.BufferedReader;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class readLine {public static void main(String[] args) {// TODO Auto-generated method stubFile file = new File("C:/zc.txt");BufferedReader reader = null;String tempString = null;int line =1;try {System.out.println("以行为单位读取文件内容,一次读一整行:");reader = new BufferedReader(new FileReader(file));while ((tempString = reader.readLine()) != null) {System.out.println("Line"+ line + ":" +tempString);line ++ ;}reader.close();} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}finally{if(reader != null){try {reader.close();} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}}}}按字节读取TXT文件package zc;import java.io.File;import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException;import java.io.InputStream;public class readerFileByChars {public static void main(String[] args) {// TODO Auto-generated method stubFile file = new File("c:/zc.txt");InputStream in = null;byte[] tempByte = new byte[1024];int byteread = 0;try {System.out.println("以字节为单位读取文件内容,一次读多个字节:");in = new FileInputStream(file);while ((byteread = in.read(tempByte)) != -1 ) {System.out.write(tempByte, 0, byteread);}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if (in != null) {try {in.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }}。
Java如何读取文本文件
Java如何读取文本文件Java具有简单性、面向对象、分布式、健壮性、安全性、平台的独立与可移植性、多线程、动态性等特点。
Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
以下是店铺为大家搜索整理的如何读取文本文件,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生网!下面的代码是读取文本文件的例子,程序会读取text.txt文件,并将它的内容显示出来。
1 import java.io.BufferedReader;2 import java.io.File;3 import java.io.FileReader;4 import java.io.FileNotFoundException;5 import java.io.IOException;67 public class ReadTextFileExample8 {9 public static void main(String[] args)10 {11 File file = new File("test.txt");12 StringBuffer contents = new StringBuffer();13 BufferedReader reader = null;1415 try16 {17 reader = new BufferedReader(new FileReader(file));18 String text = null;1920 // repeat until all lines is read21 while ((text = reader.readLine()) != null)22 {23 contents.append(text)24 .append(System.getProperty(25 "line.separator"));26 }。
java学习笔记——jsp简单方法读取txt文本数据
java学习笔记——jsp简单⽅法读取txt⽂本数据该⽅法不需要数据库和excel插件,程序简单,实现速度快。
⽬标:如下⾯的txt⽂档有200多个,每个txt⽂档都有20条不规则记录,需要将每个⽂档中的每条数据保存到excel中。
这些txt是从⽹站中保存下来的,由于⼀些⽹站要验证session和ip,所以不是很好实现⽹上抓取,就对下载下来的⽂本⽂件进⾏处理,以后再研究⽹上抓取的过程。
⽂本⽚段例⼦:HIGHLY CITED PAPERS FOR (PEOPLES R CHINA)Sorted by: Citations Publication Year Journal Title881 - 900 (of 6910) [ 41 | 42 | 43 | 44 | 45 | 46 | 47 |48 | 49 | 50 ]Page 45 of 346881 Citations: 3Title:GEVREY HYPOELLIPTICITY FOR A CLASS OF KINETIC EQUATIONSAuthors:CHEN H; LI WX; XU CJSource:COMMUN PART DIFF EQUAT 36 (4): 693-728 2011Addresses:Wuhan Univ, Sch Math & Stat, Wuhan 430072, Peoples RChina.Univ Rouen, CNRS, UMR 6085, St Etienne, France.Field:MATHEMATICS882 Citations: 3Title:HIGHER AUSLANDER ALGEBRAS ADMITTING TRIVIAL MAXIMAL ORTHOGONALSUBCATEGORIESAuthors:HUANG ZY; ZHANG XJSource:J ALGEBRA 330 (1): 375-387 MAR 15 2011Addresses:Nanjing Univ, Dept Math, Nanjing 210093, Jiangsu Prov,Peoples R China.Nanjing Univ Informat Sci & Technol, Coll Math & Phys, Nanjing210044, Jiangsu Prov, Peoples R China.Field:MATHEMATICS883 Citations: 3Title:PREDATOR-PREY SYSTEM WITH STRONG ALLEE EFFECT IN PREY例⼦中红⾊字体为需要抽取的字段,遇到的问题有:每⼀页都有多条记录,如何区分各个记录;每个字段的⾏数都不⼀样,如何确定其⾏数。
java读取txt文件并输出结果
java读取txt⽂件并输出结果这篇⽂章主要介绍了java读取txt⽂件并输出结果,⽂中通过⽰例代码介绍的⾮常详细,对⼤家的学习或者⼯作具有⼀定的参考学习价值,需要的朋友可以参考下描述:1.java读取指定txt⽂件并解析⽂件格式:代码:package com.thinkgem.wlw.modules.midea;import java.io.*;import java.util.ArrayList;import java.util.List;/*** @Author: zhouhe* @Date: 2019/6/19 8:48*/public class Test {public static void main(String[] args) {// ⽂件夹路径String path = "D:\\input.txt";try {List<String> scanListPath = readFile02(path);// System.out.println(scanListPath);for (int i = 0; i < scanListPath.size(); i++) {String mytext = scanListPath.get(i);//替换所有制表符mytext = mytext.replaceAll("\t",",");System.out.println(mytext);//每⼀⾏都转化为新的数组,根据下标去判断参数值对应的参数是什么String [] strArr= mytext.split(","); //注意分隔符是需要转译for (int m = 0; m < strArr.length; m++) {// System.out.println(strArr[m]);switch(m){case 0:System.out.println("时间:"+strArr[m]);break;case 1:System.out.println("甲烷:"+strArr[m]);break;case 2:System.out.println("总烃:"+strArr[m]);break;case 3:System.out.println("⾮甲烷总烃:"+strArr[m]);break;case 4:System.out.println("氨⽓:"+strArr[m]);break;case 5:System.out.println("硫化氢:"+strArr[m]);break;case 6:System.out.println("氧⽓:"+strArr[m]);break;default:break;}}}} catch (IOException e) {System.out.println("有异常,⽆法读取");}}/*** 读取⼀个⽂本⼀⾏⼀⾏读取** @param path* @return* @throws IOException*/public static List<String> readFile02(String path) throws IOException {// 使⽤⼀个字符串集合来存储⽂本中的路径,也可⽤String []数组List<String> list = new ArrayList<String>();FileInputStream fis = new FileInputStream(path);// 防⽌路径乱码如果utf-8 乱码改GBK eclipse⾥创建的txt ⽤UTF-8,在电脑上⾃⼰创建的txt ⽤GBKInputStreamReader isr = new InputStreamReader(fis, "UTF-8");BufferedReader br = new BufferedReader(isr);String line = "";while ((line = br.readLine()) != null) {// 如果 t x t⽂件⾥的路径不包含---字符串这⾥是对⾥⾯的内容进⾏⼀个筛选if (stIndexOf("---") < 0) {list.add(line);}}br.close();isr.close();fis.close();return list;}}结果:2.java读取指定⽂件夹下的所有txt⽂件并输出内容(我这⾥⼀个⽂件夹下⾯有 2 个txt⽂件):代码:package com.thinkgem.wlw.modules.midea;import java.io.*;/*** @Author zhouhe* @Date 2019/10/10 13:10*/public class Test2 {/**新建⼀个类把下⾯代码放进去,注意要设置basePath(你要读取的⽂件夹),读取和写⼊的⽅法也都写好了.你可以根据⾃⼰的需求掉⽤就⾏了**/ static String basePath="D:\\测试";/** * 查找⽂件夹下所有符合csv的⽂件 * * @param dir 要查找的⽂件夹对象 * */public static void findFile(File dir) throws IOException {File[] dirFiles = dir.listFiles();for(File temp : dirFiles){if(!temp.isFile()){findFile(temp);}//查找指定的⽂件if(temp.isFile() && temp.getAbsolutePath().endsWith(".txt") ){//获取⽂件路径,包含⽂件名String filePath = temp.getAbsolutePath();//获取⽂件名String fileName = temp.getName();System.out.println(temp.isFile() + " " + temp.getAbsolutePath());readFileContent(temp);}}}/** * @param file 要读取的⽂件对象 * @return 返回⽂件的内容 * */public static String readFileContent(File file) throws IOException{FileReader fr = new FileReader(file);BufferedReader br = new BufferedReader(fr);StringBuffer sb = new StringBuffer();while(br.ready()){// sb.append(br.readLine());System.out.println(br.readLine());}System.out.println(sb.toString());return sb.toString();}/** * @param file 要写⼊的⽂件对象 * @param content 要写⼊的⽂件内容 * */public static void writeFileContent(File file,String content) throws IOException{FileWriter fw = new FileWriter(file);fw.write(content);fw.flush();fw.close();}public static void main(String[] args) {try {findFile(new File(basePath));} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}结果:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java代码实现读写txt文件(txt文件转换成java文件)
29
30 /**
31 * 删除单个文件
32 *
33 * @param fileName
34 *
要删除的文件的文件名
35 * @return 单个文件删除成功返回true,否则返回false
36 */
37 public static boolean deleteFile(String fileName) {
64
fileOutputStream.close();
65
flag=true;
66
} catch (Exception e) {
80
}
81
//删除掉原来的文件
82
deleteFile(name01);
83
84
/* 输出数据 */
85
try {
86
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(name02)),
35
String result = "";
36
try {
37
InputStreamReader reader = new InputStreamReader(new FileInputStream(file),"gbk");
38
BufferedReader br = new BufferedReader(reader);
59
boolean flag=false;
60
FileOutputStream fileOutputStream=null;
java读取txt文件
java读取txt⽂件⼀、读取txt⽂件。
1、步骤 :①、创建⽂件句柄File file = new File(filePath);②、将⽂件内容读取到内存中new FileInputStream(file)③、封装数据 InputStreamReaderInputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding)④、读取数据BufferedReader bufferedReader = new BufferedReader(read); 每⾏数据bufferedReader.readLine()2、场景: txt⽂件内容:123456...读取每⾏内容, 并将每⾏内容⽤ , 拼接成 123,456public class ReadTxt {public static void main(String[] args) {String filePath = "/Users/xupengwei/Downloads/test.txt";readTxtFile(filePath );}public static void readTxtFile(String filePath) {try {String encoding = "GBK";File file = new File(filePath);if (file.isFile() && file.exists()) { // 判断⽂件是否存在InputStreamReader read = new InputStreamReader(new FileInputStream(file), encoding);// 考虑到编码格式 BufferedReader bufferedReader = new BufferedReader(read);String lineTxt = null;StringBuffer sb = new StringBuffer();while ((lineTxt = bufferedReader.readLine()) != null) {sb.append(lineTxt);sb.append(",");}System.out.println(sb.toString());read.close();} else {System.out.println("找不到指定的⽂件");}} catch (Exception e) {System.out.println("读取⽂件内容出错");e.printStackTrace();}}}⼆、拓展...场景 : 正则匹配。
Java读取文件内容的六种方法
Java读取⽂件内容的六种⽅法1.Scanner第⼀种⽅式是Scanner,从JDK1.5开始提供的API,特点是可以按⾏读取、按分割符去读取⽂件数据,既可以读取String类型,也可以读取Int类型、Long类型等基础数据类型的数据。
@Testvoid testReadFile1() throws IOException {//⽂件内容:Hello World|Hello ZimugString fileName = "D:\\data\\test\\newFile4.txt";try (Scanner sc = new Scanner(new FileReader(fileName))) {while (sc.hasNextLine()) { //按⾏读取字符串String line = sc.nextLine();System.out.println(line);}}try (Scanner sc = new Scanner(new FileReader(fileName))) {eDelimiter("\\|"); //分隔符while (sc.hasNext()) { //按分隔符读取字符串String str = sc.next();System.out.println(str);}}//sc.hasNextInt() 、hasNextFloat() 、基础数据类型等等等等。
//⽂件内容:1|2fileName = "D:\\data\\test\\newFile5.txt";try (Scanner sc = new Scanner(new FileReader(fileName))) {eDelimiter("\\|"); //分隔符while (sc.hasNextInt()) { //按分隔符读取Intint intValue = sc.nextInt();System.out.println(intValue);}}}上⾯的⽅法输出结果如下:Hello World|Hello ZimugHello WorldHello Zimug122.Files.lines (Java 8)如果你是需要按⾏去处理数据⽂件的内容,这种⽅式是我推荐⼤家去使⽤的⼀种⽅式,代码简洁,使⽤java 8的Stream流将⽂件读取与⽂件处理有机融合。
java 获取指定类型文件的方法
一、介绍在编程领域,经常会有需要获取指定类型的文件的需求,特别是在Java开发中。
Java作为一种面向对象的程序设计语言,提供了丰富的API和库,使得获取指定类型文件的操作变得相对简单。
本文将介绍Java中获取指定类型文件的方法,以及在实际项目开发中的应用。
二、使用File类的listFiles()方法Java中的File类提供了用于文件操作的大量方法,其中listFiles()方法可以获取指定目录下的所有文件和子目录。
我们可以结合文件过滤器来获取指定类型的文件。
1. 使用FilenameFilter过滤器我们可以实现一个FilenameFilter接口的实例,然后将其传递给listFiles()方法,以获得指定类型的文件列表。
以下为一个示例代码:```javaFile folder = new File("D:/documents");File[] files = folder.listFiles(new FilenameFilter() {@Overridepublic boolean accept(File dir, String name) {return name.endsWith(".txt");}});```上述代码中,我们通过传递一个实现FilenameFilter接口的匿名类来过滤出所有以“.txt”结尾的文件。
2. 使用FileFilter过滤器除了FilenameFilter外,我们还可以使用FileFilter接口来实现文件过滤。
FileFilter接口只包含一个accept()方法,用于过滤文件。
以下为一个示例代码:```javaFile folder = new File("D:/documents");File[] files = folder.listFiles(new FileFilter() {@Overridepublic boolean accept(File pathname) {return pathname.getName().endsWith(".txt");}});上述代码中,我们通过传递一个实现FileFilter接口的匿名类来过滤出所有以“.txt”结尾的文件。
Java 获取Word文本样式(字体、字号、颜色、背景、行距等)
Java 读取Word文本/段落格式属性本文介绍通过Java后端程序代码来读取Word文本和段落格式的方法。
本次测试环境如下:●Word版本:2013●编译环境:IntelliJ IDEA2018●Work库:free spire.doc.jar 3.9.0●JDK版本:1.8.0通过textrange.getCharacterFormat()方法读取文本字符串格式,通过paragraph.getFormat()读取段落格式,读取具体文字及段落属性时,可支持读取字体、字号、文字颜色、文字背景、文字是否加粗或倾斜、文字下划线、大小写、边框、上标下标、行距、段落缩进、对齐方式、段落边框、背景等等,下表中罗列了所有可支持读取的样式属性,供参考:读取文本格式getCharacterFormat():读取段落格式:getFormat()用于测试的Word文档:Java示例代码import com.spire.doc.*;import com.spire.doc.documents.Paragraph;import com.spire.doc.documents.TextSelection;import com.spire.doc.fields.TextRange;import java.awt.*;public class GetTextFormat {public static void main(String[] args) {//加载Word源文档Document doc = new Document();doc.loadFromFile("test.docx");//获取段落数量int count = doc.getSections().get(0).getParagraphs().getCount();System.out.println("总共含有段落数:" + count);//查找指定文本TextSelection textSelections = doc.findString("东野圭吾", false, true);//获取字体名称String fontname =textSelections.getAsOneRange().getCharacterFormat().getFontName();//获取字体大小float fontsize =textSelections.getAsOneRange().getCharacterFormat().getFontSize();System.out.println("字体名称:" + fontname +"\n"+"字体大小:"+fontsize);//获取第二段Paragraph paragraph2 = doc.getSections().get(0).getParagraphs().get(1);//获取段落行距float linespage = paragraph2.getFormat().getLineSpacing();System.out.println("段落行距:" + linespage);//遍历段落中的子对象for (int z = 0; z < paragraph2.getChildObjects().getCount(); z++){Object obj2 = paragraph2.getChildObjects().get(z);//判定是否为文本if (obj2 instanceof TextRange){TextRange textRange2 = (TextRange) obj2;//获取文本颜色Color textcolor = textRange2.getCharacterFormat().getTextColor();if (!(textcolor.getRGB() == 0)){System.out.println("文本颜色:" + textRange2.getText() + textcolor.toString());}//获取字体加粗效果boolean isbold = textRange2.getCharacterFormat().getBold();if (isbold == true){System.out.println("加粗文本:" + textRange2.getText());}//获取字体倾斜效果boolean isitalic = textRange2.getCharacterFormat().getItalic();if (isitalic == true){System.out.println("倾斜文本:" + textRange2.getText());}//获取文本背景String text = textRange2.getText();Color highlightcolor =textRange2.getCharacterFormat().getHighlightColor();//获取文本的高亮颜色(即突出显示颜色)if (!(highlightcolor.getRGB() == 0 )){System.out.println("文本高亮:" + text +highlightcolor.toString());//输出高亮的文本和颜色}Color textbackgroundcolor =textRange2.getCharacterFormat().getTextBackgroundColor();//获取文字背景(底纹)if (!(textbackgroundcolor.getRGB()==0)){System.out.println("文本背景:" + text + textbackgroundcolor.toString());//输出有背景的文本和颜色}}}}}运行程序,输入获取结果:。
Java读取文本文件的各种方法
Java读取⽂本⽂件的各种⽅法⽬录1、⽅法⽅法⼀、使⽤BufferedReader类⽅法⼆、使⽤ FileReader 类⽅法三、使⽤ Scanner 类⽅法四、读取列表中的整个⽂件2、语法⽅法五、将⽂本⽂件读取为字符串前⾔:有多种写⼊和读取⽂本⽂件的⽅法。
这在处理许多应⽤程序时是必需的。
在Java 中有多种⽅法可以读取纯⽂本⽂件,例如你可以使⽤FileReader、BufferedReader或Scanner来读取⽂本⽂件。
每个实⽤程序都提供了⼀些特殊的东西,例如BufferedReader 为快速读取提供数据缓冲,⽽Scanner 提供解析能⼒。
1、⽅法使⽤BufferedReader 类使⽤Scanner 类使⽤⽂件阅读器类读取列表中的整个⽂件将⽂本⽂件读取为字符串我们还可以同时使⽤BufferReader 和Scanner在Java 中逐⾏读取⽂本⽂件。
然后Java SE 8引⼊了另⼀个Stream类java.util.stream.Stream,它提供了⼀种惰性且更有效的⽅式来读取⽂件。
让我们更深⼊地讨论上述每个⽅法,最重要的是通过⼀个⼲净的Java 程序实现它们。
⽅法⼀、使⽤BufferedReader类此⽅法从字符输⼊流中读取⽂本。
它确实缓冲以有效读取字符、数组和⾏。
可以指定缓冲区⼤⼩,也可以使⽤默认⼤⼩。
对于⼤多数⽤途,默认值⾜够⼤。
通常,Reader 发出的每个读取请求都会导致对底层字符或字节流发出相应的读取请求。
因此,建议将BufferedReader 包装在任何 read() 操作可能代价⾼昂的Reader 周围,例如FileReaders和InputStreamReaders,如下所⽰:BufferedReader in = new BufferedReader(Reader in, int size);例⼦:import java.io.*;public class HY {public static void main(String[] args) throws Exception{File file = new File("C:\\Users\\pankaj\\Desktop\\test.txt");BufferedReader br= new BufferedReader(new FileReader(file));String st;while ((st = br.readLine()) != null)System.out.println(st);}}输出:如果你想学习编程可以参考海拥的博客⽅法⼆、使⽤ FileReader 类读取字符⽂件的便利类。
java从文本中提取关键内容的方法
java从文本中提取关键内容的方法文章标题:探讨Java从文本中提取关键内容的方法在信息爆炸的时代,我们每天都会接触和处理各种各样的文本信息。
有时候我们需要从这些文本中提取出某些关键内容,比如关键词、关键短语或者其他有用的信息。
在计算机编程领域中,Java作为一种常用的编程语言,提供了多种方法来实现文本信息的提取和处理。
在本文中,我们将深入探讨Java从文本中提取关键内容的方法,希望能为读者提供一些有价值的见解和思路。
一、正则表达式在Java中,正则表达式是一种强大的文本处理工具,它可以帮助我们从文本中匹配和提取出特定的内容。
通过使用正则表达式,我们可以实现对文本中的关键词、关键短语等内容进行精确的提取。
我们可以使用正则表达式来匹配文本中的电子通信位置区域、通信方式号码、URL连接等特定格式的内容,从而实现信息的提取和处理。
在实际应用中,我们可以借助Java中的Pattern和Matcher类来实现对文本的匹配和提取,从而实现对关键内容的提取和处理。
二、字符串操作除了正则表达式外,Java中的字符串操作也是一种常用的文本处理方法。
通过使用字符串的相关方法,比如indexOf、substring等,我们可以实现对文本中关键内容的定位和提取。
如果我们需要从文本中提取某个关键词,我们可以通过字符串的indexOf方法定位该关键词在文本中的位置,然后再通过substring方法来提取出该关键词所在的内容。
这种方法虽然相对简单,但在某些场景下也是非常有效的。
结合字符串的split方法,我们还可以实现对文本内容的分割和提取,从而进一步实现对关键内容的提取和处理。
三、自然语言处理除了上述方法外,Java还提供了一些强大的自然语言处理工具,比如HanLP、Stanford NLP等。
通过使用这些工具,我们可以实现对文本内容的分词、词性标注、命名实体识别等功能,从而更精确地实现对文本中关键内容的提取。
我们可以使用HanLP对中文文本进行分词,然后通过词性标注和命名实体识别,来提取出文本中的关键词和短语,实现对文本内容的深度提取和分析。
java中高效获取txt所有文本内容的方法
java中高效获取txt所有文本内容的方法Java中高效获取txt所有文本内容的方法在Java编程中,我们经常需要读取文件的内容并进行处理。
在某些情况下,我们需要读取一个txt文件的所有文本内容,并且希望能够以高效的方式实现。
本文将介绍一种高效获取txt所有文本内容的方法,并逐步回答中括号内的问题。
第一步:使用Java的File类首先,我们需要使用Java的File类来表示我们要读取的txt文件。
File类提供了很多与文件相关的常用方法,比如判断文件是否存在、获取文件路径等。
javaFile file = new File("file.txt");在上面的代码中,我们创建了一个名为file的File对象,表示文件名为file.txt的文本文件。
你可以将file.txt替换为你要读取的txt文件名。
问题1:如何创建File类对象?答:通过在File类的构造函数中传入文件名(包括路径)来创建File对象。
问题2:如何表示要读取的txt文件的路径?答:可以使用相对路径或绝对路径来表示要读取的txt文件的路径。
相对路径是相对于当前Java程序的工作目录的路径,而绝对路径是该txt文件在文件系统中的完整路径。
第二步:使用Java的BufferedReader类接下来,我们需要使用Java的BufferedReader类来读取txt文件的内容。
BufferedReader类提供了按行读取文本内容的方法,非常适合读取txt 文件。
javatry {BufferedReader reader = new BufferedReader(new FileReader(file));String line;while ((line = reader.readLine()) != null) {处理文本内容}reader.close();} catch (IOException e) {e.printStackTrace();}在上面的代码中,我们首先创建一个BufferedReader对象reader,它使用FileReader对象来读取文件内容。
Java基础之删除文本文件中特定行的内容
Java基础之删除⽂本⽂件中特定⾏的内容⽬录⼀、问题的产⽣⼆、解决思路三、具体解决⽅法四、总结⼀、问题的产⽣在最近使⽤I/O流写图书馆管理系统中管理员对图书和⽤户的管理操作时,遇到了需要删除特定图书和⽤户的操作,在查询资料和询问⽼师后得知I/O流中没有可以直接删除单独⾏的⽅法。
⼆、解决思路同时也为我提供了新的思路:将整个⽂件中的全部内容读取出来,然后通过集合将每⼀⾏单独存放,通过查找到集合内特定的内容后,将该⾏内容删除,此时list集合会⾃动将后⾯的内容填补上来,再重新写⼊的时候不会出现空⾏的情况。
这时再重新遍历⼀次该集合,将现在的集合内容写⼊⽂件中,此时再看⽂件,已经完成了删除需要删除的特定⾏内容了!三、具体解决⽅法下⾯我以我项⽬中删除书籍的⽅法为例,具体讲解该如何解决该问题先看⼀下我存⼊的书籍⽂件:通过上图可以看到,我在写⼊⽂件时,每⼀个属性中间添加了⼀个“,”作为分隔符,这样我们将⽂件中内容读取到集合之后可以通过split(",");直接将⽂件中读出的每⾏的内容通过数组的形式将每⼀个属性分隔开,⽅便我们通过数组下标直接访问相应的属性。
同时由上图可知:此时我的书籍⽂件中存在7本书籍,除了红楼梦被“张三”借出外,其他书籍均未被借出。
那我们在删除书籍的时候就会遇到⼀个问题,若我需要删除的书籍是⼀本被⽤户借出的书籍在逻辑上我们应该不允许该书籍被删除。
所以在程序设计时我们应该避免删除被⽤户借出后未归还的书籍。
具体判断逻辑如下:/*** 对书籍.txt⽂件中特定的书籍进⾏删除:* 1.读出⽂件中的内容,将其存放在⼀个String类型的集合中* 2.通过分隔符将集合的每⼀位分割开存放到数组中* 3.通过数组下标查找是否有该书籍* 否:* 输出信息,跳出程序return;* 是:* 4.通过数组下标查找该书是否有⼈借阅* 是:* 输出信息,跳出程序return;* 否:* 5.通过遍历删除集合中该位所对应的内容* 6.将更新后的集合信息写⼊⽂件中,完成删除书籍操作*/有了程序的具体逻辑之后,我们就可以开始写代码了:import java.io.*;import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class DeleteBook {private String bookDelete;String[] bookinf = new String[8];String[] bookinf1 = new String[8];public void deleteBook() throws IOException {File file = new File("书籍.txt");FileInputStream intput = new FileInputStream(file);BufferedReader reader = new BufferedReader(new InputStreamReader(intput));String tempString;//定义⼀个字符串,每⼀次读出该⾏字符串内容List<String> list = new ArrayList<>();//定义⼀个list字符串集合⽤来储存每⼀⾏的字符串信息while ((tempString = reader.readLine()) != null) {list.add(tempString);}System.out.println("==========当前书籍有==========");//遍历字符串集合for (String book : list) {bookinf = book.split(",");//将‘,‘作为分隔符,将字符串分隔开存放进⼊数组中System.out.print(bookinf[0] + " ");}System.out.println("");//输⼊要删除的内容System.out.println("请输⼊要删除的书籍名称:");Scanner scanner = new Scanner(System.in);bookDelete = scanner.next();//查询该⽤户是否有未归还的书籍,如果存在未归还的书籍,将不能删除该⽤户的信息FileInputStream inputStream = new FileInputStream(file);BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));String bookString;List<String> bookList = new ArrayList<>();while ((bookString = bufferedReader.readLine()) != null) {bookList.add(bookString);}boolean have = false;//是否存在书籍for (String borrowUser : bookList) {bookinf = borrowUser.split(",");//判断书籍是否存在if (bookDelete.equals(bookinf[0])) {have = true;}//若该书籍存在,判断书籍对应⽤户位是否存在⽤户//若对应位⽤户不为“⽆”,则表⽰该书籍有⼈借出,则⽆法删除该书籍//同时告知管理员(打印)该书籍被哪位⽤户借出尚未归还if (!"⽆".equals(bookinf[6]) && have) {System.out.println("该书籍尚未被⽤户“" + bookinf[6] + "”归还,请在其归还书籍后再进⾏操作!");return;}}//若书籍不存在,输出相应信息后直接跳出程序if (have == false) {System.out.println("⽆法找到该书籍,请重新确认后再进⾏操作!");return;}for (String delBook : list) {bookinf1 = delBook.split(",");//找到即将删除的书籍在集合中的位置,将该部分内容从集合中删除,然后清空整个⽂件if (bookDelete.equals(bookinf1[0])) {list.remove(delBook);//在集合中删除该⾏FileWriter fd = new FileWriter(file, false);//append传⼊false表⽰写⼊内容时将会覆盖⽂件中之前存在的内容fd.write("");//执⾏删除操作,写⼊空内容覆盖之前的内容fd.close();break;}}//重新遍历⼀遍更改后的集合,将内容重新写⼊⽂件内for (String user : list) {bookinf1 = user.split(",");FileWriter fw = new FileWriter(file, true);//append传⼊true表⽰写⼊内容时将不会覆盖⽂件中之前存在的内容,将新的内容写在之前内容的后⾯fw.write(bookinf1[0] + "," + bookinf1[1] +"," + bookinf1[2] + "," + bookinf1[3] +"," + bookinf1[4] + "," + bookinf1[5] +"," + bookinf1[6] + "," + bookinf1[7]);//执⾏重新写⼊内容的操作,将修改过的集合通过数组读下标后,再重新存写⼊⽂件中 fw.write(System.getProperty("line.separator"));//在段落后添加⼀个换⾏符fw.close();}System.out.println("删除成功!");}我们添加⼀个main⽅法试运⾏⼀下:public static void main(String[] args) throws IOException {DeleteBook db = new DeleteBook();db.deleteBook();}运⾏前⽂件中的书籍信息:当我们输⼊⼀本未被借出的书籍时:此时⽂件中的书籍信息:可以看到,魔戒已经从⽂件中消失,在魔戒下⼀⾏的霍⽐特⼈顶上来了,并未出现空⾏的情况。
java读取文件内容,解析Json格式数据方式
java读取⽂件内容,解析Json格式数据⽅式⽬录java读取⽂件内容,解析Json格式数据⼀、读取txt⽂件内容(Json格式数据)⼆、解析处理Json格式数据三、结果存⼊数据库四、测试java 读取txt⽂件中的json数据,进⾏导出以下代码可直接运⾏java读取⽂件内容,解析Json格式数据⼀、读取txt⽂件内容(Json格式数据)public static String reader(String filePath) {try {File file = new File(filePath);if (file.isFile() && file.exists()) {InputStreamReader read = new InputStreamReader(new FileInputStream(file), "UTF-8");BufferedReader bufferedReader = new BufferedReader(read);String lineTxt = bufferedReader.readLine();while (lineTxt != null) {return lineTxt;}}} catch (UnsupportedEncodingException | FileNotFoundException e) {System.out.println("Cannot find the file specified!");e.printStackTrace();} catch (IOException e) {System.out.println("Error reading file content!");e.printStackTrace();}return null;}⼆、解析处理Json格式数据private static void process(String txtStr) {JSONObject json = JSONObject.fromObject(txtStr);JSONArray datas = json.getJSONObject("data").getJSONArray("rows");List<Map<String, Object>> list = new ArrayList<>();for (int i = 0; i < datas.length(); i++) {Map<String, Object> map = new HashMap<>();JSONObject obj = datas.getJSONObject(i).getJSONObject("cells");String name = obj.getString("weibo_name");String code = obj.getString("weibo_id");String url = BASE_URL + obj.getString("url");map.put("name", name);map.put("code", code);map.put("url", url);list.add(map);}if (!list.isEmpty()) {insert(list);}}三、结果存⼊数据库private static void insert(List<Map<String, Object>> list) {for (Map<String, Object> map : list) {//遍历数据,写存储⽅法}}四、测试public static void main(String[] args) {String filePath = "E:\\wugang\\data\\weiboyi\\wechat.txt";String txtStr = reader(filePath);if (txtStr != null) {process(txtStr);} else {System.out.println("Read the content is empty!");}System.out.println("--- end ---");}java 读取txt⽂件中的json数据,进⾏导出txt⽂件中的内容如下以下代码可直接运⾏package com.hwt.count.test;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import ermodel.HSSFCell;import ermodel.HSSFCellStyle;import ermodel.HSSFFont;import ermodel.HSSFRow;import ermodel.HSSFSheet;import ermodel.HSSFWorkbook;import org.apache.poi.hssf.util.CellRangeAddress;import org.apache.poi.hssf.util.HSSFColor;import net.sf.json.JSONObject;public class Testaa {public static void main(String[] args) {try {String path = "C:/Users/dell/Desktop/test.txt";File file = new File(path);InputStreamReader isr = new InputStreamReader(new FileInputStream(file),"GBK");BufferedReader br = new BufferedReader(isr);String content = br.readLine() ;br.close();isr.close();content = content.substring(2, content.length()-2);content = content.replace("},{", ";");String[] arrContent = content.split(";");//设置列头名称和表体数据String[] rowsName = new String[]{"code_type","code","name"};List<Object[]> dataList = new ArrayList<Object[]>();for(String arrc : arrContent){JSONObject jsonObj = JSONObject.fromObject("{"+arrc+"}");String code = jsonObj.getString("code");String name = jsonObj.getString("name");Object[] obj = new Object[rowsName.length];obj[0] = "TYPE";obj[1] = code;obj[2] = name;dataList.add(obj);}//设置列头名称和表体数据HSSFWorkbook workbook = setWorkBookDate(dataList,rowsName);try {// 将workbook对象输出到⽂件test.xlsFileOutputStream fos = new FileOutputStream("C:/Users/dell/Desktop/test.xls");workbook.write(fos);fos.flush(); // 缓冲fos.close(); // 关闭流}catch (Exception e1) {e1.printStackTrace();}} catch (Exception e) {e.printStackTrace();}}private static HSSFWorkbook setWorkBookDate(List<Object[]> dataList,String[] rowsName){ //创建⼯作簿对象HSSFWorkbook workbook = new HSSFWorkbook();//创建⼯作表,设置当前页名称HSSFSheet sheet = workbook.createSheet("测试");//设置默认⾏⾼sheet.setDefaultRowHeight((short)350);//合并表头表尾的单元格/*sheet.addMergedRegion(new CellRangeAddress(0, 2, 0, 3));sheet.addMergedRegion(new CellRangeAddress(3, 3, 0, 3));//冻结⾏workbook.getSheetAt(0).createFreezePane(0, 4);RegionUtil.setBorderBottom(1, new CellRangeAddress(3, 3, 0, 3), workbook.getSheetAt(0), workbook);//设置边框*/ // 获取表头样式对象// 获取表体样式对象HSSFCellStyle style = getCommonStyle(workbook);// 定义所需列数int columnNum = rowsName.length;//创建列头HSSFRow rowHead = sheet.createRow(0);for(int n = 0;n < columnNum;n++){HSSFCell cellRow = rowHead.createCell(n,HSSFCell.CELL_TYPE_STRING);//创建列头对应个数的单元格cellRow.setCellValue(rowsName[n]);//设置列头单元格的值cellRow.setCellStyle(style);//设置列头单元格样式}//将查询出的数据设置到sheet对应的单元格中for(int i=0;i<dataList.size();i++){Object[] obj =new Object[dataList.get(i).length];obj[0] = dataList.get(i)[0];obj[1] = dataList.get(i)[1];obj[2] = dataList.get(i)[2];HSSFRow row = sheet.createRow(i+1);//创建所需的⾏数for(int j = 0; j < obj.length; j++){HSSFCell cell = row.createCell(j,HSSFCell.CELL_TYPE_STRING);//设置单元格的数据类型if(!"".equals(obj[j]) && obj[j] != null){cell.setCellValue(obj[j].toString());//设置单元格的值}else{cell.setCellValue("");//设置单元格的值为空字符串}cell.setCellStyle(style);//设置单元格样式}}//让列宽随着导出的列长⾃动适应for (int colNum = 0; colNum < columnNum; colNum++) {int columnWidth = sheet.getColumnWidth(colNum) / 256;for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {HSSFRow currentRow;//当前⾏未被使⽤过if (sheet.getRow(rowNum) == null) {currentRow = sheet.createRow(rowNum);} else {currentRow = sheet.getRow(rowNum);}if (currentRow.getCell(colNum) != null) {HSSFCell currentCell = currentRow.getCell(colNum);if(currentCell != null && !"".equals(currentCell)){if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {int length = currentCell.getStringCellValue().getBytes().length;if (columnWidth < length) {columnWidth = length;}}}}}if(colNum == 0){//设置表体第⼀列的宽度sheet.setColumnWidth(colNum, (columnWidth+4) * 400);}else{//设置表体其他列的宽度sheet.setColumnWidth(colNum, (columnWidth+4) * 400);}}return workbook;}public static HSSFCellStyle getCommonStyle(HSSFWorkbook workbook) {// 设置字体HSSFFont font = workbook.createFont();//设置字体⼤⼩font.setFontHeightInPoints((short)11);//字体加粗//font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//设置字体名字font.setFontName("Courier New");//设置样式;HSSFCellStyle style = workbook.createCellStyle();//设置底边框;style.setBorderBottom(HSSFCellStyle.BORDER_THIN);//设置底边框颜⾊;style.setBottomBorderColor(HSSFColor.BLACK.index);//设置左边框;style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//设置左边框颜⾊;style.setLeftBorderColor(HSSFColor.BLACK.index);//设置右边框;style.setBorderRight(HSSFCellStyle.BORDER_THIN);//设置右边框颜⾊;style.setRightBorderColor(HSSFColor.BLACK.index);//设置顶边框;style.setBorderTop(HSSFCellStyle.BORDER_THIN);//设置顶边框颜⾊;style.setTopBorderColor(HSSFColor.BLACK.index);//在样式⽤应⽤设置的字体;style.setFont(font);//设置⾃动换⾏;style.setWrapText(false);//设置⽔平对齐的样式为居中对齐;style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置垂直对齐的样式为居中对齐;style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);return style;}}以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
java获取文件内容的方法
java获取文件内容的方法【实用版4篇】篇1 目录I.获取文件内容的方法概述II.使用Scanner类读取文件内容III.使用BufferedReader类读取文件内容IV.使用FileInputStream类读取文件内容V.使用FileChannel类读取文件内容篇1正文Java中获取文件内容的方法有很多种,下面介绍几种常用的方法:1.使用Scanner类读取文件内容Scanner类是Java中常用的类之一,它可以帮助我们方便地读取文件内容。
具体实现方法如下:```javatry (Scanner scanner = new Scanner(new File("filename.txt"))) {while (scanner.hasNextLine()) {String line = scanner.nextLine();// 处理每一行内容}} catch (FileNotFoundException e) {e.printStackTrace();}```2.使用BufferedReader类读取文件内容BufferedReader类可以帮助我们快速读取文件内容,它可以读取文本文件、CSV文件等。
具体实现方法如下:```javatry (BufferedReader reader = new BufferedReader(new FileReader("filename.txt"))) {String line;while ((line = reader.readLine()) != null) {// 处理每一行内容}} catch (IOException e) {e.printStackTrace();}```3.使用FileInputStream类读取文件内容FileInputStream类可以帮助我们读取二进制文件,它可以读取图片、音频、视频等文件。
java txt按行读取报文解析
java txt按行读取报文解析一、引言在处理文本文件(如txt)时,报文的解析是一项常见任务。
报文通常包含着重要的信息,需要被正确地读取和解析。
Java是一种强大的编程语言,提供了多种方法来读取和处理txt文件中的报文。
本文将介绍如何使用Java按行读取txt文件并解析其中的报文。
二、Java文件读取在Java中,可以使用多种方式来读取txt文件。
其中一种常见的方法是使用Java IO库中的FileReader和BufferedReader类。
以下是一个简单的示例代码:```javaimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class TxtFileReader {public static void main(String[] args) {String filePath = "path/to/your/file.txt";try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {String line;while ((line = br.readLine()) != null) {// 处理每一行的内容System.out.println(line);}} catch (IOException e) {e.printStackTrace();}}}```这段代码将打开指定路径下的txt文件,逐行读取其中的内容,并在控制台输出每一行的内容。
三、报文解析在读取txt文件中的报文后,需要对这些数据进行解析。
通常,报文中的数据是以某种格式(如JSON、XML等)组织的,需要根据具体的格式进行解析。
对于txt文件,可以使用正则表达式或其他字符串处理方法来解析其中的数据。
JAVA中读取文件(二进制,字符)内容的几种方法总结
JAVA中读取⽂件(⼆进制,字符)内容的⼏种⽅法总结JAVA中读取⽂件内容的⽅法有很多,⽐如按字节读取⽂件内容,按字符读取⽂件内容,按⾏读取⽂件内容,随机读取⽂件内容等⽅法,本⽂就以上⽅法的具体实现给出代码,需要的可以直接复制使⽤public class ReadFromFile {/*** 以字节为单位读取⽂件,常⽤于读⼆进制⽂件,如图⽚、声⾳、影像等⽂件。
*/public static void readFileByBytes(String fileName) {File file = new File(fileName);InputStream in = null;try {System.out.println("以字节为单位读取⽂件内容,⼀次读⼀个字节:");// ⼀次读⼀个字节in = new FileInputStream(file);int tempbyte;while ((tempbyte = in.read()) != -1) {System.out.write(tempbyte);}in.close();} catch (IOException e) {e.printStackTrace();return;}try {System.out.println("以字节为单位读取⽂件内容,⼀次读多个字节:");// ⼀次读多个字节byte[] tempbytes = new byte[100];int byteread = 0;in = new FileInputStream(fileName);ReadFromFile.showAvailableBytes(in);// 读⼊多个字节到字节数组中,byteread为⼀次读⼊的字节数while ((byteread = in.read(tempbytes)) != -1) {System.out.write(tempbytes, 0, byteread);}} catch (Exception e1) {e1.printStackTrace();} finally {if (in != null) {try {in.close();} catch (IOException e1) {}}}}/*** 以字符为单位读取⽂件,常⽤于读⽂本,数字等类型的⽂件*/public static void readFileByChars(String fileName) {File file = new File(fileName);Reader reader = null;try {System.out.println("以字符为单位读取⽂件内容,⼀次读⼀个字节:");// ⼀次读⼀个字符reader = new InputStreamReader(new FileInputStream(file));int tempchar;while ((tempchar = reader.read()) != -1) {// 对于windows下,\r\n这两个字符在⼀起时,表⽰⼀个换⾏。
Java读取文件指定行数的数据
Java读取⽂件指定⾏数的数据⽅法:创建两个⾮public类,⼀个输出本⾏内容及字符数,另⼀个确定⽂件内容的总⾏数。
代码如下:import java.io.*;import java.util.Scanner;public class ReadFile2{//输出本⾏内容及字符数static void readLineVarFile(String fileName, int lineNumber) throws IOException{BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); //使⽤缓冲区的⽅法将数据读⼊到缓冲区中 String line = reader.readLine(); //定义⾏数if (lineNumber <= 0 || lineNumber > getTotalLines(fileName)) //确定输⼊的⾏数是否有内容{System.out.println("不在⽂件的⾏数范围之内。
");}int num = 0;while (line != null) //当⾏数不为空时,输出该⾏内容及字符数{if (lineNumber == ++num){System.out.println("第" + lineNumber + "⾏: " + line+" 字符数为:"+line.length());}line = reader.readLine();}reader.close();}// ⽂件内容的总⾏数static int getTotalLines(String fileName) throws IOException{BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); //使⽤缓冲区的⽅法将数据读⼊到缓冲区中LineNumberReader reader = new LineNumberReader(br);String s = reader.readLine(); //定义⾏数int lines = 0;while (s != null) //确定⾏数{lines++;s = reader.readLine();}reader.close();br.close();return lines; //返回⾏数}public static void main(String[] args) throws IOException{String fileName = "D:/test.txt"; // 读取⽂件int totalNo = getTotalLines(fileName); // 获取⽂件的内容的总⾏数System.out.println("本⽂总共有:"+totalNo+ "⾏");while(true){Scanner sc=new Scanner(System.in);int lineNumber =sc.nextInt(); // 指定读取的⾏号readLineVarFile("D:/test.txt", lineNumber); //读取指定⾏的内容}}}。
Java:bufferedReader.readLine()读取文件换行问题
Java:bufferedReader.readLine()读取⽂件换⾏问题代码实现读取到的内容正常换⾏,并将内容复制到系统剪贴板当中去。
public static void ReadAlart(){try {String encoding="utf-8";File file=new File("Alart.txt");if(file.isFile() && file.exists()){ //判断⽂件是否存在InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding);//考虑到编码格式BufferedReader bufferedReader = new BufferedReader(read);String lineTxt = "";String AlartTxt="";while((lineTxt = bufferedReader.readLine()) != null){lineTxt+='\n';AlartTxt+=lineTxt;}//System.out.println(AlartTxt);Clipboard sysClip = Toolkit.getDefaultToolkit().getSystemClipboard();Transferable text = new StringSelection(AlartTxt);sysClip.setContents(text, null);read.close();}else{System.out.println("找不到指定的⽂件");}} catch (Exception e) {System.out.println("读取⽂件内容出错");e.printStackTrace();}}Java:bufferedReader.readLine()读取⽂件换⾏问题FileInputStream来读取,完全没有问题,他是读取字节形式的,所以读到中⽂字符的时候,字节流就会出现乱码,所以必去⽤要字符流来读取,在⽤FileInputStream读取⽂件是⽤他⾥⾯read()⽅法来读取的,是⼀⼝⽓直接全部读完的,就会留下原来⽂件换⾏的脚印,但是⽤BufferedReader来读取是⽤readLine()来读取的,意思是⼀⾏⼀⾏的来读取,这样当读到回车符的时候,就先返回给字符串,然后再进⾏下⼀⾏的读取!。
- 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<str.length;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){
if(s!=null){
// System.out.println(s+"LLLLLLLLLL");
}
}
}
reader.close();
in.close();
return lines;
}
}
从上述代码中可以很清楚的看出想要获取某一行的数据,只需要传入此行的lineNumber就行。