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

我用了readLine()读取,可是每次读取都是读取txt文件里的最后一行。我的代码如下:if(m.getActionCommand().equals("查询")){St... 我用了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()的方法读取的,但我就是不知道为什么我每次都是只读取一行,而且还是最后一行,求大神看看我代码哪里有问题了,谢谢。
展开
 我来答
张定营
推荐于2017-09-19 · TA获得超过517个赞
知道小有建树答主
回答量:463
采纳率:50%
帮助的人:137万
展开全部
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);
    }
     
     
 
}
打不出字了
2014-06-15
知道答主
回答量:42
采纳率:0%
帮助的人:23.9万
展开全部
area是不是一个文本框?你每次setText当然会清空所有内容,所以到最后留下的只有最后一行。你应该把文件内容读到一个数组里,数组长度1024就可以。然后把数组的内容set到area里面
追问
对,能告诉一下我代码应该怎么弄吗?
追答
字节流字符流都可以,就是往数组里面读,字节流就算文件超过1k也没关系的。忘记你写的是readLine了,既然是一行一行读,你不如直接放StringBuffer里,让他变成一个很长的字符串。不过文件如果太大还是读字节数组吧,毕竟你要是读一本三国演义出来,那字符串得多长啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
糖豆0爴svM扰
2014-06-15 · 超过58用户采纳过TA的回答
知道答主
回答量:117
采纳率:100%
帮助的人:110万
展开全部
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();
}
}
求采纳为满意回答。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小马妖哥
2014-06-15
知道答主
回答量:13
采纳率:0%
帮助的人:6.3万
展开全部
area.setText(s);是每次循环都更换的,所以只显示一行,你可以用System.out.println(s)测试一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wysung
2014-06-15 · TA获得超过250个赞
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:160万
展开全部

试一下改成下面这语句:

   String s= null;
   while(null!=(s = jin.readLine())){
    area.setText(area.getText()+s); 
   }
追问
这样是只读取第一行..
追答
其实全部已经读出来了,问题是在这里
area.setText(s); ----> area.setText(area.getText()+s);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式