简体   繁体   中英

Last line only partially prints in Java

I have some java code that compares two files. When it finds similar numbers on a particular line it prints that line to a new file. This seems to work for a good amount of time... Until what I believe is the last line. That line only ever gets partially printed. I THINK that it might be because of a 'break' that is later in the code, but I looked around on google and wasn't really sure if any of the answers were really relevant. Here is some code that I think is related:

Read in files
while the line isn't null...
Parse files
Write a header
Some comparisons
while (!input.startsWith("#") && !input.startsWith("P")) {
      prse = input.split("\t");//split the file by tabs
      pos = prse[7];
      poson = prse[8];
      pos = Integer.parseInt(poson);
      if (cnt < num.size()) { //if we haven't exceeded an array
         if (num.get(cnt).equals(pos)) { //if the first number is the same
              if (cnt2 < posstart.size()) { //if we haven't exceeded another array
                  end = Integer.parseInt(posend.get(cnt2)); //change to int
                  start = Integer.parseInt(posstart.get(cnt2));//change to int
                  if (pos < start) { //if it is less then the starting pos then it can't fall within 
                      break; //so break
                  }
                  if (pos < end && pos > start) {//I am trying to see if a number falls within the range of numbers from a separate file
                      out1.write(input + "\n"); //If it does: This is where I am writing out the line
                       break; //if I remove this break the program hangs here
                   } else {
                       cnt2++; //if it wasn't the same, add 
                 }
               }
               } else {
                   cnt++; //if it was the same move to the next one
                   cnt2 = 0; //reset this number
                   break; //go  back to beginning
               }
               } else {
                  break;
               }

So the code works perfectly for about 6500 lines but then it abruptly cuts off the last line:

Blah    B   6   5   8   C   5   X   6
Blah    A   0   1   4   C   2   X   7
Blah    B   3   5   9   C   5   X   6
Blah    B   0   9   4

Does anyone know what I can add to stop the final line from cutting off so suddenly? I know in BASH you could specify for it to wait... But I was confused by the java equivalents and was hoping someone could suggest one for me and help to explain it a bit better.

For the sake of having an answer (until Carl puts his up) I am going to go ahead and answer

did you close the outputstream? maybe you need to call the flush method. – Carl

He was right. I hadn't. Silly me.

实际上,我犯了很多错误,我认为这是因为使用垃圾收集器时,我们实际上并不关心内存管理,因此,它往往会忘记关闭我们打开的任何iostream或将内存刷新到磁盘。但这是一件可怕的事情。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM