Java/File Input Output/LineNumberReader
Содержание
Convert lines into the canonical format, that is, terminate lines with the CRLF sequence.
<source lang="java">
import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; /**
* Convert lines into the canonical format, that is, terminate lines with the * CRLF sequence. * * @author John Mani */
public class CRLFOutputStream extends FilterOutputStream {
protected int lastb = -1; protected boolean atBOL = true; // at beginning of line? private static final byte[] newline = { (byte) "\r", (byte) "\n" }; public CRLFOutputStream(OutputStream os) { super(os); } public void write(int b) throws IOException { if (b == "\r") { writeln(); } else if (b == "\n") { if (lastb != "\r") writeln(); } else { out.write(b); atBOL = false; } lastb = b; } public void write(byte b[]) throws IOException { write(b, 0, b.length); } public void write(byte b[], int off, int len) throws IOException { int start = off; len += off; for (int i = start; i < len; i++) { if (b[i] == "\r") { out.write(b, start, i - start); writeln(); start = i + 1; } else if (b[i] == "\n") { if (lastb != "\r") { out.write(b, start, i - start); writeln(); } start = i + 1; } lastb = b[i]; } if ((len - start) > 0) { out.write(b, start, len - start); atBOL = false; } } /* * Just write out a new line, something similar to out.println() */ public void writeln() throws IOException { out.write(newline); atBOL = true; }
}
</source>
Create LineNumberReader from FileReader
<source lang="java">
import java.io.FileReader; import java.io.LineNumberReader; class LineViewer {
public static void main(String[] args) throws Exception { LineNumberReader lnr = null; FileReader fr = new FileReader(args[0]); lnr = new LineNumberReader(fr); String s; while ((s = lnr.readLine()) != null) System.out.println(lnr.getLineNumber() + ": " + s); }
}
</source>
Line Number IO
<source lang="java">
import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; public class LineNumberIOApp {
public static void main(String args[]) throws IOException { FileReader inFile = new FileReader("LineNumberIOApp.java"); LineNumberReader inLines = new LineNumberReader(inFile); String inputLine; while ((inputLine = inLines.readLine()) != null) { System.out.println(inLines.getLineNumber() + ". " + inputLine); } }
}
</source>
Split Lines
<source lang="java">
import java.io.IOException; import java.io.LineNumberReader; import java.io.StringReader; import java.util.ArrayList; import java.util.List; /*
* soapUI, copyright (C) 2004-2009 eviware.ru * * soapUI is free software; you can redistribute it and/or modify it under the * terms of version 2.1 of the GNU Lesser General Public License as published by * the Free Software Foundation. * * soapUI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details at gnu.org. */
public class Utils {
public static final String NEWLINE = System.getProperty( "line.separator" );
public static boolean isNullOrEmpty( String str ) { return str == null || str.length() == 0 || str.trim().length() == 0; }
public static List<String> splitLines( String string ) { try { ArrayList<String> list = new ArrayList<String>(); LineNumberReader reader = new LineNumberReader( new StringReader( string ) ); String s; while( ( s = reader.readLine() ) != null ) { list.add( s ); } return list; } catch( IOException e ) { // I don"t think this can really happen with a StringReader. throw new RuntimeException( e ); } }
}
</source>
Use LineNumberReader class to read file
<source lang="java">
import java.io.File; import java.io.FileReader; import java.io.LineNumberReader; public class Main {
public static void main(String[] args) throws Exception { File file = new File("data.csv"); FileReader fr = new FileReader(file); LineNumberReader lnr = new LineNumberReader(fr); // lnr.setLineNumber(400); String line = ""; while ((line = lnr.readLine()) != null) { System.out.println("Line Number " + lnr.getLineNumber() + ": " + line); } fr.close(); lnr.close(); }
}
</source>
Using the LineNumberReader to read a text file line by line
<source lang="java">
import java.io.FileReader; import java.io.LineNumberReader; public class Main {
public static void main(String[] args) throws Exception { LineNumberReader r = new LineNumberReader(new FileReader("yourFile.txt")); String line = null; while ((line = r.readLine()) != null) { System.out.println(r.getLineNumber() + ": " + line); } r.close(); }
}
</source>