[英]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.