簡體   English   中英

使用InputStream和Bufferreader讀取txt文件,缺少一半行

[英]Reading txt file with InputStream and Bufferreader, missing half the lines

我正在測試一個較大程序的一部分,因此這就是為什么這樣做看起來有點不合邏輯的原因。我使用的代碼相當簡單,但是我不明白為什么文件中的前半行是完全丟失,根本不被閱讀。

public class Trying {

   public static String myReader(){
        StringBuilder buf = new StringBuilder();
        BufferedReader in = null;
        String str = null;
        try {
            InputStream is = new FileInputStream("c:/themap.txt");
            in = new BufferedReader(new InputStreamReader(is));


            while ((str = in.readLine()) != null) {
                buf.append(str);
                //buf.append(System.getProperty("line.separator"));

                System.out.println(str);
            }

            in.close();

        }
        catch (IOException e) {
            e.printStackTrace();
        }

        return buf.toString();
    }


public static void main(String[] args) {

    String fmap = myReader();

    //System.out.println(fmap);

如您所見,我在函數中有一個基本的println只是為了查看發生了什么,而第一行根本沒有顯示。 文件的其余部分將按原樣讀取。 可能與文件長度為5000行有關。 任何幫助,將不勝感激。

文件行如下所示

o AE_Cube.014
v 4.996883 0.000000 -0.663325
v 4.996883 0.336000 -0.663325
v 4.490770 0.000000 -1.013470
v 4.490770 0.336000 -1.013470
v 4.990770 0.000000 -1.070477
v 4.990770 0.336000 -1.070477
v 4.589172 0.000000 -1.269103

他們都是這樣的。 它們不會在中間更改為其他格式

我得到的輸出是相同的,但缺少文件的前1/3。

f 650//652 654//652 653//652
f 649//653 651//653 654//653
f 648//654 649//654 650//654
f 651//655 647//655 648//655
f 652//656 648//656 650//656
f 650//657 649//657 654//657
f 649//658 647//658 651//658
f 648//654 647//654 649//654
o DV_Cube.059
v -1.593174 0.150000 -2.197537
v -1.617969 0.150000 -2.297979
v -1.494583 0.150000 -2.229900
v -1.525588 0.150000 -2.324470
v -1.593001 0.000000 -2.199192
v -1.616714 0.000000 -2.297979
v -1.526114 0.000000 -2.324543
v -1.495018 0.000000 -2.229900

顯然,代碼工作正常。 我的錯誤不是沒有在Eclipse中禁用控制台限制,而是顯示了不完整的字符串,導致我感到恐慌。

感謝EJP和Maarten Bodewes。

這應該工作。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;

public class Test {

public Test() {

}

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

    File file = new File("myFile");
    ArrayList <String> myText = new ArrayList<String>();
    StringBuilder myTextString = new StringBuilder();

    try {
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);

        String line;

        while((line = br.readLine()) != null){
            myText.add(line);
            myTextString.append(line + " ");
        }

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    System.out.println(myText);
    System.out.println(myTextString);
}

}

在示例中,我展示了填充數組或僅使用stringbuilder構建String的方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM