2015-04-04 5 views
0

Привет друзья У меня есть следующие данные в хранилище в файле.BufferReader не умеет читать полный файл в java

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head></head> 
    <body> 
<div id="divOldReceipt" style="width:100%"> 
    <style> 

     .tableStyle{border-collapse: collapse; 
       width: 100%; 
        font-family: Times New Roman; 
       font-size: 17px; 
        border: 1px solid black;} 

     .tableStyle th td {border: 1px solid black;} 

     .tableStyle td {border: 1px solid black;padding-left:3px;} 
    </style> 

    <table cellspacing="0" cellpadding="0" style="width: 8in; font-family:Times New Roman;"> 
        <tbody> 
         <tr> 
          <td style="width: 20%;text-align:center" rowspan="2"> 
           <img style="height: 84px; width: 71px" src={%images_path%}></img> 
          </td> 
          <td style="width: 60%;text-align: center; font-size: 25px;"> 
           <b> 

            CORPORATION OF CHENNAI 

           </b> 
          </td> 
          <td></td> 
         </tr> 
         <tr> 
          <td style="text-align: center; font-size: 18px"> 
           <b> 

            PROPERTY TAX RECEIPT 

           </b> 
          </td> 
          <td></td> 
         </tr> 
         <tr> 
          <td colspan="3"> 
           <table class="tableStyle" cellspacing="0" cellpadding="0"> 
            <tbody> 
             <tr> 
              <td style="width: 20%"></td> 
              <td style="width: 20%"></td> 
              <td style="width: 10%"></td> 
              <td style="width: 10%"></td> 
              <td style="width: 40%"></td> 
             </tr> 
             <tr> 
              <td style="height: 25px;"> 
               <b> 

                Receipt No: 

               </b> 
              </td> 
              <td colspan="2" style="height: 25px;"> 
               <b> 

                {%receiptNo%} 

               </b> 
              </td> 
              <td colspan="2" style="text-align:center;height: 25px;"> 
               <b> 

                Receipt Date: {%Receipt_date%} 

               </b> 
              </td> 
             </tr> 
             <tr> 
              <td style="height: 25px;"> 
               <b> 

                Name: 

               </b> 
              </td> 
              <td style="height: 25px;" colspan="4"> 

               {%persone_name%} 

              </td> 
             </tr> 
             <tr> 
              <td style="height: 25px;"> 
               <b> 

                Address: 

               </b> 
              </td> 
              <td style="height: 25px;" colspan="4"> 

               {%address%} 

              </td> 
             </tr> 
             <tr> 
              <td rowspan="2" style="height: 25px;"> 
               <b> 

                Payment Details: 

               </b> 
              </td> 
              <td style="height: 25px;border-right-style:none;"> 

               Description: 

              </td> 
              <td colspan="3" style="height: 25px;border-left-style:none;"> 

               New Property Tax Number : {%new_property_tax_no%} 

               <br> 

               Old Property Tax Number : {%old_property_tax_no%} 

              </td> 
             </tr> 
             <tr> 
              <td style="height: 25px;border-right-style:none;"> 

               Paid By: 

              </td> 
              <td colspan="3" style="height: 25px;border-left-style:none;"> 

               {%paid_by%} 

              </td> 
             </tr> 
             <tr> 
              <td style="text-align:center;height: 25px;" colspan="3"> 
               <b> 

                Description Head of A/C 

               </b> 
              </td> 
              <td style="text-align:center;height: 25px;" colspan="2"> 
               <b> 

                Amount (in Rupees) 

               </b> 
              </td> 
             </tr> 
             <tr> 
              <td style="height: 25px;text-align: center;" colspan="3"> 

               {%installment%} 

              </td> 
              <td style="text-align:center;padding-right:5px;height : 25px;" colspan="2"> 

               {%adjistment%} 

              </td> 
             </tr> 
             <tr> 
              <td style="text-align:right;padding-right:5px;height: 25px;" colspan="3"> 
               <b> 

                Total: 

               </b> 
              </td> 
              <td style="text-align:center;padding-right:5px;height : 25px;" colspan="2"> 
               <b> 

                {%adjistment%} 

               </b> 
              </td> 
             </tr> 

             {%Bank Details%} 
             <tr> 
              <td colspan="5" style="height: 25px;"> 

               This is computer generated receipt. Signature is not neccessary.Except Online payment the receipt is subject to realisation of cheque. 

              </td> 
             </tr> 
            </tbody> 
           </table> 
          </td> 
         </tr> 
        </tbody> 
       </table> 
</div> 
    </body> 

Я хочу, чтобы прочитать этот файл в Java, используя следующий код

public String readTemplateFile(String fileName) throws Exception 
    { 

    BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName)); 
    String line =null; 
    StringBuilder sb = new StringBuilder(); 
    while((line = bufferedReader.readLine())!=null) 
    { 
     sb.append(line); 
    } 
    return sb.toString(); 
} 

ИЛИ

public String readFile(String filepath) throws IOException { 
    File f = new File(filepath); 
    if (f.exists()) { 
     FileInputStream in = new FileInputStream(f); 
     int size = in.available(); 
     byte c[] = new byte[size]; 
     for (int i = 0; i < size; i++) { 
      c[i] = (byte) in.read(); 
     } 
     String filedata = new String(c, "utf-8"); 
     return filedata.toString().trim(); 
    } else { 
     return null; 
    } 
} 

Но полный файл не получает чтения следующего выводится

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml">  <head></head>  <body> <div id="divOldReceipt" style="width:100%">  <style>     .tableStyle{border-collapse: collapse;     width: 100%;      font-family: Times New Roman;     font-size: 17px;     border: 1px solid black;}   .tableStyle th td {border: 1px solid black;}     .tableStyle td {border: 1px solid black;padding-left:3px;}  </style>    <table cellspacing="0" cellpadding="0" style="width: 8in; font-family:Times New Roman;">      <tbody>       <tr>        <td style="width: 20%;text-align:center" rowspan="2">         <img style="height: 84px; width: 71px" src="../Images/Corporation.gif"></img>        </td>        <td style="width: 60%;text-align: center; font-size: 25px;">         <b>          CORPORATION OF CHENNAI         </b>        </td>        <td></td>       </tr>       <tr>        <td style="text-align: center; font-size: 18px">         <b>          PROPERTY TAX RECEIPT         </b>        </td>        <td></td>       </tr>       <tr>        <td colspan="3">         <table class="tableStyle" cellspacing="0" cellpadding="0">          <tbody>           <tr>            <td style="width: 20%"></td>            <td style="width: 20%"></td>            <td style="width: 10%"></td>            <td style="width: 10%"></td>            <td style="width: 40%"></td>           </tr>           <tr>            <td style="height: 25px;">             <b>              Receipt No:             </b>            </td>            <td colspan="2" style="height: 25px;">             <b>              {%receiptNo%}             </b>            </td>            <td colspan="2" style="text-align:center;height: 25px;">             <b>              Receipt Date: {%Receipt_date%}             </b>            </td>           </tr>           <tr>            <td style="height: 25px;">             <b>              Name:             </b>            </td>            <td style="height: 25px;" colspan="4">             {%persone_name%}            </td>           </tr>           <tr>            <td style="height: 25px;"> 

Я запутался, почему мой код ведет себя, как это может кто-нибудь плз помочь мне решить эту проблему.

Заранее спасибо

+0

readFile использует InputStream.available(), как если бы он возвращал размер файла, но это не так. Прочитайте javadoc для этого метода. –

+0

Ваш код в первом блоке в порядке. Вы лучше измените 'sb.append (строка);' на 'sb.append (строка +" \ n ");'. То, как вы определяете то, что прочитали, вероятно, неверно. Как вы определяете, что получаете? Разрабатывать на 'follow is output'. Вывод чего? – greenapps

ответ

-2

ли выход вы упоминаете производства первой или второй образец кода?

Для вашего первого примера кода обратите внимание, что bufferedReader.readLine() возвращает следующую строку файла, но отбрасывает символы конца строки. Эти концевые символы: , а не, снова добавленный вызовом метода sb.append(line). Это может объяснить, почему конечные строки удаляются из вашего файла.

Для вашего второго кода нелогич-, in.available() только возвращает оценку числа оставшихся байт в потоке, поэтому не следует использовать для определения размера входных данных. Лучше читать поток последовательно до тех пор, пока не будет достигнут конец файла. Если конец файла достигнут, in.read() вернет -1.

+0

'available()' возвращает оценку количества байтов *, которые могут быть прочитаны без блокировки. * В Javadoc * против * используется определенное предупреждение, поскольку оно содержит количество оставшихся байтов в потоке. – EJP

+0

@EJP. Да. Вот почему я специально сказал, что OP должен использовать другой метод определения конца файла, а именно: читать последовательно, пока 'in.read()' не вернет -1. – Hoopje

Смежные вопросы