Java 如何读取txt文件的内容?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 如何读取txt文件的内容?相关的知识,希望对你有一定的参考价值。
如上图,一方面记录序号,一方面记录对应的值?
能有代码么,谢谢
java读取txt文件内容。可以作如下理解:
首先获得一个文件句柄。File file = new File(); file即为文件句柄。两人之间连通电话网络了。接下来可以开始打电话了。
通过这条线路读取甲方的信息:new FileInputStream(file) 目前这个信息已经读进来内存当中了。接下来需要解读成乙方可以理解的东西
既然你使用了FileInputStream()。那么对应的需要使用InputStreamReader()这个方法进行解读刚才装进来内存当中的数据
解读完成后要输出呀。那当然要转换成IO可以识别的数据呀。那就需要调用字节码读取的方法BufferedReader()。同时使用bufferedReader()的readline()方法读取txt文件中的每一行数据哈。
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
/**
* @author Java团长
* H20121012.java
* 2017-10-29上午11:22:21
*/
public class H20121012
/**
* 功能:Java读取txt文件的内容
* 步骤:1:先获得文件句柄
* 2:获得文件句柄当做是输入一个字节码流,需要对这个输入流进行读取
* 3:读取到输入流后,需要读取生成字节流
* 4:一行一行的输出。readline()。
* 备注:需要考虑的是异常情况
* @param 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;
while((lineTxt = bufferedReader.readLine()) != null)
System.out.println(lineTxt);
read.close();
else
System.out.println("找不到指定的文件");
catch (Exception e)
System.out.println("读取文件内容出错");
e.printStackTrace();
public static void main(String argv[])
String filePath = "L:\\\\Apache\\\\htdocs\\\\res\\\\20121012.txt";
// "res/";
readTxtFile(filePath);
我有一个微信公众号,经常会分享一些Java技术相关的干货文章,还有一些学习资源。
如果你需要的话,可以用微信搜索“Java团长”或者“javatuanzhang”关注。 参考技术A import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Readtxt
public static void main(String[] args)
try
Scanner in = new Scanner(new File("d:/abc.txt"));
while (in.hasNextLine())
String str = in.nextLine();
splitt(str);
catch (FileNotFoundException e)
e.printStackTrace();
public static String[] splitt(String str)
String strr = str.trim();
String[] abc = strr.split("[\\\\pSpace]+");
String str1 = abc[0];
String str2 = abc[1];
System.out.println(str1);
System.out.println(str2);
return abc;
说明:“\\pSpace”匹配空白字符,前面加个反斜线字符,是为了转义。转义后,加了个中括号,是分了分组,不加中括号也没事,只是给清楚点,后面的加号是“一次或多次”的意思。
本回答被提问者采纳 参考技术B import java.io.File;import java.io.FileNotFoundException;
import java.util.Scanner;
public class $
public static void main(String[] args)
try
Scanner in = new Scanner(new File("D:/a.txt"));
while (in.hasNextLine())
String str = in.nextLine();
System.out.println(str);
catch (FileNotFoundException e)
e.printStackTrace();
可以取出来了,取出来的,你想怎么处理?追问
你好,是这样的,我想把序号和数据记录到两个变量里
追答 while (in.hasNextLine())String str = in.nextLine();
String[] arr = str.split(" ");//txt里面用什么间隔,这里面就放什么.得到了数组,你自己处理吧
System.out.println(Arrays.toString(arr));
参考技术C 按行读取之后每行转为字符串,对字符串进行解析,空格前面的是序号,空格后面的是相应的值。
字符串解析算法: 创建一个boolean变量,值为false,当这行读出空格的时候赋值为true,解析的时候如果这个boolean变量为true就把字符存入值里。 参考技术D 能有的,很简单,readLine即可,然后封装到Map里面,key就是序号,value就是后面的值
如何在不提取Java的情况下读取压缩文件的内容
【中文标题】如何在不提取Java的情况下读取压缩文件的内容【英文标题】:How to read content of the Zipped file without extracting in java 【发布时间】:2013-02-08 18:26:16 【问题描述】:我有类似ex.zip
的文件。在本例中,Zip 文件仅包含一个同名文件(即“ex.txt”),该文件非常大。我不想每次都提取 zip 文件。因此我需要在不提取 zip 文件的情况下读取文件的内容(ex.txt)。我尝试了一些类似下面的代码但我只能读取变量中的文件名。
如何读取文件的内容并将其存储在变量中?
提前谢谢你
fis=new FileInputStream("C:/Documents and Settings/satheesh/Desktop/ex.zip");
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry entry;
while((entry = zis.getNextEntry()) != null)
i=i+1;
System.out.println(entry);
System.out.println(i);
//read from zis until available
【问题讨论】:
正如所写,您的问题非常不清楚。是否要从 ZIP 中提取文件?您想解决什么具体问题? 顺便说一句:导航系统也是这样做的,它们将数字路线图数据压缩在主内存中,并按需解压缩部分 【参考方案1】:试试这个:
ZipFile fis = new ZipFile("ex.zip");
int i = 0;
for (Enumeration e = zip.entries(); e.hasMoreElements();)
ZipEntry entry = (ZipEntry) e.nextElement();
System.out.println(entry);
System.out.println(i);
InputStream in = fis.getInputStream(entry);
例如,如果文件包含文本,并且您想将其打印为字符串,则可以这样读取 InputStream:Read/convert an InputStream to a String
【讨论】:
【参考方案2】:您的想法是将压缩文件原样读取到字节数组中并将其存储在变量中。 稍后当您需要 zip 时,您可以按需提取它,从而节省内存:
首先读取字节数组中Zip文件的内容zipFileBytes
如果您有 Java 1.7:
Path path = Paths.get("path/to/file");
byte[] zipFileBytes= Files.readAllBytes(path);
否则使用 Appache.commons 库
byte[] zipFileBytes;
zipFileBytes = IOUtils.toByteArray(InputStream input);
现在您的 Zip 文件存储在变量 zipFileBytes 中,仍然是压缩形式。
然后当你需要提取一些东西时使用
ByteArrayInputStream bis = new ByteArrayInputStream(zipFileBytes));
ZipInputStream zis = new ZipInputStream(bis);
【讨论】:
【参考方案3】:我认为在您的情况下,zipfile 是一个可以容纳许多文件的容器(因此每次打开它时都会迫使您导航到正确的包含文件),这会使事情变得非常复杂,因为您声明每个 zipfile仅包含一个文本文件。也许只 gzip 文本文件要容易得多(gzip 不是容器,只是数据的压缩版本)。而且使用起来非常简单:
GZIPInputStream gis = new GZIPInputStream(new FileInputStream("file.txt.gz"));
// and a BufferedReader on top to comfortably read the file
BufferedReader in = new BufferedReader(new InputStreamReader(gis) );
制作它们同样简单:
GZIPOutputStream gos = new GZIPOutputStream(new FileOutputStream("file.txt.gz"));
【讨论】:
这不是答案,他希望压缩形式的 zip 在变量中。 Quote: 我不想每次都在磁盘上提取zip文件然后读取它的数据 @AlexWien 它没有,它只允许读取内容(逐字节或逐行显示)无需扩展一次整个文件,它我的理解是这就是 OP 所追求的。我只是想指出一种压缩文件的替代方法,它比 zip 文件更易于使用。将 zip 文件这样存储在变量 imo 中没有实际应用。 不清楚,他想要什么,也许他想要你的解决方案是什么,解压缩而不在磁盘上创建一个新文件。将 zip 文件保存在变量中并不总是愚蠢的:它从字节数组中解压缩的方式比从文件中读取更快:想象一下,您必须在一秒钟内解压缩 100 次,您无法在具有磁盘访问权限的嵌入式设备上做到这一点低缓存。有很多应用:例如地图匹配系统,计算车辆在两个大国行驶的轨迹:从磁盘读取会很慢以上是关于Java 如何读取txt文件的内容?的主要内容,如果未能解决你的问题,请参考以下文章