java如何读取一个txt文件的所有内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何读取一个txt文件的所有内容相关的知识,希望对你有一定的参考价值。

我用了readLine()读取,可是每次读取都是读取txt文件里的最后一行。我的代码如下:
if(m.getActionCommand().equals("查询"))
String yonghu =text.getText();
String yong=text.getText()+"的记录";
File f=new File(yong+".txt");

try
f.createNewFile();
Reader nachu=new FileReader(f);
BufferedReader jin=new BufferedReader(nachu);
String s=jin.readLine();
while(s!=null)
area.setText(s);
s=jin.readLine();


jin.close();

catch (IOException p)
System.out.println("File read error:"+p);

我是一个菜鸟,我百度查了好多人都是用readLine()的方法读取的,但我就是不知道为什么我每次都是只读取一行,而且还是最后一行,求大神看看我代码哪里有问题了,谢谢。

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
 

public class H 
    /**
     * 功能: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:\\\\20121012.txt";
//      "res/";
        readTxtFile(filePath);
    
     
     
 

参考技术A area是不是一个文本框?你每次setText当然会清空所有内容,所以到最后留下的只有最后一行。你应该把文件内容读到一个数组里,数组长度1024就可以。然后把数组的内容set到area里面追问

对,能告诉一下我代码应该怎么弄吗?

追答

字节流字符流都可以,就是往数组里面读,字节流就算文件超过1k也没关系的。忘记你写的是readLine了,既然是一行一行读,你不如直接放StringBuffer里,让他变成一个很长的字符串。不过文件如果太大还是读字节数组吧,毕竟你要是读一本三国演义出来,那字符串得多长啊

本回答被提问者采纳
参考技术B import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class ReadFile

public static void main(String[] args) throws IOException

String fileContent = readFileContent("");

System.out.println(fileContent);


//参数string为你的文件名
private static String readFileContent(String fileName) throws IOException

File file = new File(fileName);

BufferedReader bf = new BufferedReader(new FileReader(file));

String content = "";
StringBuilder sb = new StringBuilder();

while(content != null)
content = bf.readLine();

if(content == null)
break;


sb.append(content.trim());


bf.close();
return sb.toString();


求采纳为满意回答。
参考技术C area.setText(s);是每次循环都更换的,所以只显示一行,你可以用System.out.println(s)测试一下 参考技术D

试一下改成下面这语句:

   String s= null;
   while(null!=(s = jin.readLine()))
    area.setText(area.getText()+s); 
   

追问

这样是只读取第一行..

追答

其实全部已经读出来了,问题是在这里
area.setText(s); ----> area.setText(area.getText()+s);

java如何读取txt文件内容?

D:\1.txt我有一个文件、在d盘、想把里面的所有内容读出来赋值给String a;怎么做?

通常,可以直接通过文件流来读取txt文件的内容,但有时可能会出现乱码!此时只要设置一下文件字符编码即可。

(1)JAVA 读取txt文件内容

(2)读取文件效果:

参考技术A import java.io.*; public class Read public static void main(String [] args) try

FileReader f = new FileReader("D:\\1.txt"); // 注意路径这里可以有两种表示方法一个种\\一种/就可以了 BufferedReader buf = new BufferedReader(f);

String s; while((s = buf.readLine() ) != null) System.out.println(s); f.close(); buf.close();

catch(IOException e)
参考技术B

可以试试Apache的common.io这个工具包,很好用的

package com.havefun.play;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;

import org.apache.commons.io.FileUtils;

public class FunIO 

public static void main(String[] args) 
File file = new File("文件路径");
try 
String content = FileUtils.readFileToString(file, Charset.forName("UTF-8"));
System.out.println(content);
 catch (IOException e) 
// TODO Auto-generated catch block
e.printStackTrace();


参考技术C 给你两个方法,你可以看看 ;
//获取值返回String 文本
public String txt2String(String filePath)
File file=new File(filePath);
        StringBuilder result = new StringBuilder();
        try
            BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
            String s = null;
            while((s = br.readLine())!=null)//使用readLine方法,一次读一行
                result.append(s+System.lineSeparator());
            
            br.close();    
        catch(Exception e)
            e.printStackTrace();
        
        return result.toString();
    

//获取值不返回String 文本
public 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();

参考技术D 用FileInputStream 文件输入流进行读取, 然后用StringBuffer接收, 再赋值给 String a即可, 不要问我贴代码, 工作量大

以上是关于java如何读取一个txt文件的所有内容的主要内容,如果未能解决你的问题,请参考以下文章

Java - 读取文件夹中的所有 .txt 文件

一个文件夹下的多个txt文件,然后随机读取其中一个txt文件的内容(java代码)?

C# 如何读取一个文件夹下的多个文件内容

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

java如何读取并修改txt文件

java如何读取txt文件