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文件中的每一行数据哈。

package com.campu;
 
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文件的内容?的主要内容,如果未能解决你的问题,请参考以下文章

Java 如何读取txt文件的内容?

java如何读取并修改txt文件

java如何读取txt文件

Java 文件操作读取文本(txt)文件内容的方法代码总结

Python 如何优雅地读取TXT文件的内容

java如何读取大容量的txt文件