java - bufferedReader readline=null -


im trying write class take text file,reverse contents , write back. way want write lines in string[] array,reverse lines , write text text file. problem is, when start writing string array, writes off nulls , know text file not empty. im using copy of bufferedreader read lines. can't seem understand wrong. when initialize string array textfile down in code, have no problems reversing, when use

string[] textfile = new string[getnumberoflines ()];  

method, doesnt work.

public void reverse() throws ioexception {     bufferedreader reader = new bufferedreader(new filereader(work_folder_location + file_name));     string[] textfile = new string[3];     try {         (int = 0; < textfile.length; i++) {             textfile[i] = reader.readline();             textfile[i] = reverseline(textfile[i]);         }     } catch (ioexception e) {         throw new ioexception("there problem while operating reader.");     } {         reader.close();     }     writereversetext(textfile); }  private int getnumberoflines(bufferedreader reader) throws ioexception {     bufferedreader linesreader = reader;     int counter = 0;     try {         while (linesreader.readline() != null) {             counter++;         }         linesreader.close();     } catch (ioexception e) {         throw new ioexception("there problem while counting lines");     }     return counter; }  private string reverseline(string string) {     stringbuilder reversedstring = new stringbuilder(string).reverse();     system.out.println(reversedstring);     return reversedstring.tostring();  }  private void writereversetext(string[] textfile) throws ioexception {     bufferedwriter writer = new bufferedwriter(new filewriter(work_folder_location + file_name));     (int = 0; < textfile.length; i++) {         writer.append(textfile[i]);         writer.append(system.lineseparator());     }     writer.close(); } 

edit managed solve issue changing getnumberoflines() method:

private int getnumberoflines() throws ioexception {     bufferedreader linesreader = new bufferedreader(new filereader(work_folder_location + file_name)); 

hope helps others, love know why previous code didn't work.

your getnumberoflines() method read data bufferedreader - unless start reading file again, there's nothing read, , first call readline() return null.

however, instead of doing this, you'd better off reading file once, , populating list<string>. example:

list<string> lines = new arraylist<>(); string line; while ((line = reader.readline()) != null) {     lines.add(reverseline(line)); } 

Comments

Popular posts from this blog

php - Invalid Cofiguration - yii\base\InvalidConfigException - Yii2 -

How to show in django cms breadcrumbs full path? -

ruby on rails - npm error: tunneling socket could not be established, cause=connect ETIMEDOUT -