paavochan
2017-01-17 02:10
采纳率: 60%
浏览 3.7k
已采纳

在java中读取文件并打印出文件内容,但是只读取了文件内容的一半,急急急

代码部分:
File file = new File("F:/public.txt");
BufferedReader reader = null;

    try {
        reader = new BufferedReader(new FileReader(file));
        String tmpStriing = null;
        int line = 1;
        while((tmpStriing = reader.readLine()) != null){
            System.out.println(tmpStriing);
            line++;
        }
        reader.close();

    } catch (Exception e) {
        // TODO: handle exception

        e.printStackTrace();
    }

现在是我去读取这个文件,然后发现打印出来的时候,是从这个文件内容大概一半的位置开始读取的,上面部分没打印出来,请问是什么原因呢?,

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • little_how 2017-01-17 09:25
    已采纳

    1.如果你在控制台输出,建议使用分段打印,手动操作的方式;
    如:在每打印100条休息一下,你既可以看,也可以清除;
    休息的代码可以是:Thread.sleep(3000);//休息3秒,也可以这样:java.util.concurrent.TimeUnit.SECONDS.sleep(3);//休息3秒
    休息都有抛出中断异常

    2.你如果是使用jdk1.7以上版本,建议这样写你的代码:
    File file = new File("F:/public.txt");

    try (BufferedReader reader = new BufferedReader(new FileReader(file))){
        String tmpStriing = null;
        int line = 0;
        while((tmpStriing = reader.readLine()) != null){
                    System.out.println(tmpStriing);
            line++;
                        if(line % 200 == 0) {
                                java.util.concurrent.TimeUnit.SECONDS.sleep(3);
                        }
        }
    
    } catch (Exception e) {
        // TODO: handle exception
    
        e.printStackTrace();
    }
    
    
        希望有帮助....
    
    点赞 评论
  • anqi0819 2017-01-17 02:32

    经过测试不存在你说的问题。我用的是数字测试的。

    点赞 评论
  • 蚂蚁冲锋队 2017-01-17 02:46

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;

    public class Test {
    public static void main(String[] arg){
    File file = new File("E:/test/public.txt");
    BufferedReader reader = null;
    try {
    reader = new BufferedReader(new FileReader(file));
    String tmpStriing = null;
    int line = 1;
    while((tmpStriing = reader.readLine()) != null){
    System.out.println(tmpStriing);
    line++;
    }
    reader.close();

            } catch (Exception e) {
                // TODO: handle exception
    
                e.printStackTrace();
            }
    }
    

    }

    可以完全将内容打印出来

    所以不一定是代码的问题,你试着将public.txt复制到public2.txt中然后对比两个文件的结果看看,参考代码如下

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;

    public class Test {
    public static void main(String[] arg) {
    File file = new File("E:/test/public.txt");
    File file2 = new File("E:/test/public2.txt");
    BufferedReader reader = null;
    FileWriter write=null;
    try {
    reader = new BufferedReader(new FileReader(file));
    write=new FileWriter(file2);
    String tmpStriing = null;
    int line = 1;
    while ((tmpStriing = reader.readLine()) != null) {
    System.out.println(tmpStriing);
    line++;
    write.write(tmpStriing);
    write.write("\n");
    write.flush();
    }

        } catch (Exception e) {
            // TODO: handle exception
    
            e.printStackTrace();
        } finally {
            try {
                if (reader != null) {
                    reader.close();
                }
                if (write != null) {
                    write.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    

    }

    点赞 评论
  • 安果移不动 2017-01-17 04:33

    您好 建议使用GBK格式的 用我的代码试试 希望能解决
    // 按行解析歌词
    try {

            BufferedReader buffer = new BufferedReader(new InputStreamReader(new FileInputStream(lyricsFile),"GBK"));
           String line  = buffer.readLine();
    
            while (line!=null){
    
                List<Lyric> lineList = parserLine(line);
    
                lyricsList.addAll(lineList);
                line = buffer.readLine();
            }
    
    
    
    
    
    
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    
    点赞 评论
  • shen_wei 2017-01-17 06:49
    点赞 评论
  • 上山养老虎 2017-01-17 06:55

    public static String readFile(String filePath[]){
    File files=null;
    String line="";
    String temp="";
    String textContent="";
    BufferedReader br =null;
    InputStreamReader read =null;
    try{
    for (int i = 0; i < filePath.length; i++) {
    files = new File(filePath[i]);
    read = new InputStreamReader(new FileInputStream(files),"gb2312");
    br = new BufferedReader(read);
    //读取文件中的内容
    while((line=br.readLine())!=null){
    temp = br.readLine();
    textContent+=""+temp+"\r\n";
    }
    }
    }catch(Exception e){e.printStackTrace();
    }finally{
    try{
    br.close();
    }catch(Exception e){
    e.printStackTrace();
    }
    }
    return textContent;
    }

    测试后可以吧文件都读取出来
    
    点赞 评论
  • 创心coder 2017-01-17 07:06

    代码肯定是可以读取整个文件的,问题是你怎么确定的只读取部分的呢?在eclipse里面看的输出吗?

    点赞 评论
  • 创心coder 2017-01-17 07:17

    如果文件太大,eclipse的console装不下完整的输出,前面的输出就被覆盖了,看不到了。。。。

    点赞 评论
  • 艺匠之美 2017-01-17 08:20

    建议使用log日志空间,打印到文件中,此类情况就不会发生了

    点赞 评论

相关推荐 更多相似问题