Reading Text a line at a time

      FileReader reader = new FileReader("hi.txt");          
      BufferedReader in = new BufferedReader(reader);
      FileWriter writer = new FileWriter("out.txt");        
      PrintWriter out = new PrintWriter(writer);Hi, how would I be able to read in a combination of text and numbers and input them into another file.
Thanks

BufferedReader myReader = new BufferedReader(new FileReader(in.txt));
BufferedWriter myWriter = new BufferedWriter(new FileWriter(out.txt));
String str = new String();
while((str=myReader.readLine()) != null)
myWriter.write(str);
myWriter.flush();
myReader.close();myWriter.close();
This does a direct file to file copy.
-Jason Thomas.

Similar Messages

  • How to read text file line by line...?

    how to read text file line by line, but the linefeed is defined by user, return list of string, each line of file is a item of list?
    please help me.
    Thanks very much

    Brynjar wrote:
    In Groovy, you would do something like:
    linefeed = "\n" //or "\r\n" if the user chose so
    lines = new File('pathtofile').text.split("${linefeed}")This is one of the things that has always annoyed me about Sun's sdk, i.e. the lack of easy ways to do things like that. You always end up making your own utilities or use something like Apache's commons.io. Same goes for jdbc and xml - I'll wait for appropriate topics to show how easy that is in Groovy :)I generally agree, but what I really don't like about the Groovy text-file handling niceties: They don't care about encoding/always use the default encoding. And as soon as you want to specify the encoding, it gets a lot more complex (granted, it's still easier than in Java).

  • Reading in one line at a time.

    How can I read one line at a time?
    String sData = "One large string"
    StringReader reader = new StringReader(sData);
    StringBuffer buf = new StringBuffer();
    String line = "";
    while ((line = reader.toString()) != null) {//This line does not read one line at a time. Is it possible to do the with StringReader?
    StringTokenizer tok = new StringTokenizer(line, "|");
    Thanks:0)

    The following code snippet does what you want :-)
            String test = new String("testString \n with \n multiple lines");
            StringReader strReader = new StringReader(test);
            BufferedReader strBufRdr = new BufferedReader(strReader);
            String line = null;
            try {
                while((line=strBufRdr.readLine())!=null) {
                    System.out.println(line);
            catch(IOException e) { System.out.println(e); }Have fun!

  • Read data from a text file, one line at a time.

    I need to read data from a text file, and display each line in a String Indicator on Front Panel. It displays each line, but I get Error 4, End Of Line, unless I enter an extra line of data in the file that I don't need. I tried Read From Text File.vi, made by Nat Instr, and it gave the same error.

    The Read from Text File.vi reads data from a text file line by line until the user stops the VI manually with the Stop button on the front panel, or until an error (such as "Error 4, End of file") occurs. If an error occurs, the Simple Error Handler.vi pops up a dialog that tells you which error occurred.
    The Read from Text File.vi uses a while loop, but if you knew how many lines you wanted to read, you could replace the while loop with a for loop set to read that many lines from the file.
    If you need something more dynamic because the number of lines in your files vary, then you could change the code of the Read from Text File.vi to the expect "Error 4, End of file" and handle it appropriately. This would require unbundling the error cluster that comes fro
    m the Read File function with the Unbundle By Name function, so that you can expose the individual error "status" and error "code" values stored in the cluster. If the value of the error "code" is 4, then you can change the error "status" from true to false, and you can rebundle the cluster with the Bundle by Name function. Setting the error "status" to false instructs the Simple Error Handler to ignore the error. Otherwise, pass the original error cluster to the Simple Error Handler.vi, so that you can see what the error is.
    Of course, if you're not interested in what the errors are, you could just remove the Simple Error Handler.vi, but then you wouldn't see any error messages.
    Best of Luck,
    Dieter
    Dieter Schweiss
    Applications Engineer
    National Instruments

  • Reading a Random Line from a Text File

    Hello,
    I have a program that reads from a text file words. I currently have a text file around 800KB of words. The problem is, if I try to load this into an arraylist so I can use it in my application, it takes wayy long to load. I was wondering if there was a way to just read a random line from the text file.
    Here is my code, and the text file that the program reads from is called 'wordFile'
    import java.awt.*;
    import java.awt.geom.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    public class WordColor extends JFrame{
         public WordColor(){
              super("WordColor");
              setSize(1000,500);
              setVisible(true);
              add(new WordPanel());
         public static void main(String[]r){
              JFrame f = new WordColor();
    class WordPanel extends JPanel implements KeyListener{
         private Graphics2D pane;
         private Image img;
         private char[]characterList;
         private CharacterPosition[]positions;
         private int charcounter = 0;
         private String initialWord;
         private File wordFile = new File("C:\\Documents and Settings\\My Documents\\Java\\projects\\WordColorWords.txt");
         private FontMetrics fm;
         private javax.swing.Timer timer;
         public final static int START = 20;
         public final static int delay = 10;
         public final static int BOTTOMLINE = 375;
         public final static int buffer = 15;
         public final static int distance = 4;
         public final static Color[] colors = new Color[]{Color.red,Color.blue,Color.green,Color.yellow,Color.cyan,
                                                                          Color.magenta,Color.orange,Color.pink};
         public static String[] words;
         public static int descent;
         public static int YAXIS = 75;
         public static int SIZE = 72;
         public WordPanel(){
              words = readWords();
              setLayout(new BorderLayout());
              initialWord = getWord();
              characterList = new char[initialWord.length()];
              for (int i=0; i<initialWord.length();i++){
                   characterList[i] = initialWord.charAt(i);
              setFocusable(true);
              addKeyListener(this);
              timer = new javax.swing.Timer(delay,new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        YAXIS += 1;
                        drawWords();
                        if (YAXIS + descent - buffer >= BOTTOMLINE) lose();
                        if (allColorsOn()) win();
         public void paintComponent(Graphics g){
              super.paintComponent(g);
              if (img == null){
                   img = createImage(getWidth(),getHeight());
                   pane = (Graphics2D)img.getGraphics();
                   pane.setColor(Color.white);
                   pane.fillRect(0,0,getWidth(),getHeight());
                   pane.setFont(new Font("Arial",Font.BOLD,SIZE));
                   pane.setColor(Color.black);
                   drawThickLine(pane,getWidth(),5);
                   fm = g.getFontMetrics(new Font("Arial",Font.BOLD,SIZE));
                   descent = fm.getDescent();
                   distributePositions();
                   drawWords();
                   timer.start();
              g.drawImage(img,0,0,this);
         private void distributePositions(){
              int xaxis = START;
              positions = new CharacterPosition[characterList.length];
              int counter = 0;
              for (char c: characterList){
                   CharacterPosition cp = new CharacterPosition(c,xaxis, Color.black);
                   positions[counter] = cp;
                   counter++;
                   xaxis += fm.charWidth(c)+distance;
         private void drawThickLine(Graphics2D pane, int width, int thickness){
              pane.setColor(Color.black);
              for (int j = BOTTOMLINE;j<BOTTOMLINE+1+thickness;j++){
                   pane.drawLine(0,j,width,j);
         private void drawWords(){
              pane.setColor(Color.white);
              pane.fillRect(0,0,getWidth(),getHeight());
              drawThickLine(pane,getWidth(),5);
              for (CharacterPosition cp: positions){
                   int x = cp.getX();
                   char print = cp.getChar();
                   pane.setColor(cp.getColor());
                   pane.drawString(""+print,x,YAXIS);
              repaint();
         private boolean allColorsOn(){
              for (CharacterPosition cp: positions){
                   if (cp.getColor() == Color.black) return false;
              return true;
         private Color randomColor(){
              int rand = (int)(Math.random()*colors.length);
              return colors[rand];
         private void restart(){
              charcounter = 0;
              for (CharacterPosition cp: positions){
                   cp.setColor(Color.black);
         private void win(){
              timer.stop();
              newWord();
         private void newWord(){
              pane.setColor(Color.white);
              pane.fillRect(0,0,getWidth(),getHeight());
              repaint();
              drawThickLine(pane,getWidth(),5);
              YAXIS = 75;
              initialWord = getWord();
              characterList = new char[initialWord.length()];
              for (int i=0; i<initialWord.length();i++){
                   characterList[i] = initialWord.charAt(i);
              distributePositions();
              charcounter = 0;
              drawWords();
              timer.start();
         private void lose(){
              timer.stop();
              pane.setColor(Color.white);
              pane.fillRect(0,0,getWidth(),getHeight());
              pane.setColor(Color.red);
              pane.drawString("Sorry, You Lose!",50,150);
              repaint();
              removeKeyListener(this);
              final JPanel p1 = new JPanel();
              JButton again = new JButton("Play Again?");
              p1.add(again);
              add(p1,"South");
              p1.setBackground(Color.white);
              validate();
              again.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent evt){
                        remove(p1);
                        addKeyListener(WordPanel.this);
                        newWord();
         private String getWord(){
              int rand = (int)(Math.random()*words.length);
              return words[rand];
         private String[] readWords(){
              ArrayList<String> arr = new ArrayList<String>();
              try{
                   BufferedReader buff = new BufferedReader(new FileReader(wordFile));
                   try{
                        String line = null;
                        while (( line = buff.readLine()) != null){
                             line = line.toUpperCase();
                             arr.add(line);
                   finally{
                        buff.close();
              catch(Exception e){e.printStackTrace();}
              Object[] objects = arr.toArray();
              String[] words = new String[objects.length];
              int count = 0;
              for (Object o: objects){
                   words[count] = (String)o;
                   count++;
              return words;
         public void keyPressed(KeyEvent evt){
              char tempchar = evt.getKeyChar();
              String character = ""+tempchar;
              if (character.equalsIgnoreCase(""+positions[charcounter].getChar())){
                   positions[charcounter].setColor(randomColor());
                   charcounter++;
              else if (evt.isShiftDown()){
                   evt.consume();
              else{
                   restart();
              drawWords();
         public void keyTyped(KeyEvent evt){}
         public void keyReleased(KeyEvent evt){}
    class CharacterPosition{
         private int xaxis;
         private char character;
         private Color color;
         public CharacterPosition(char c, int x, Color col){
              xaxis = x;
              character = c;
              color = col;
         public int getX(){
              return xaxis;
         public char getChar(){
              return character;
         public Color getColor(){
              return color;
         public void setColor(Color c){
              color = c;
    }

    I thought that maybe serializing the ArrayList might be faster than creating the ArrayList by iterating over each line in the text file. But alas, I was wrong. Here's my code anyway:
    class WordList extends ArrayList<String>{
      long updated;
    WordList readWordList(File file) throws Exception{
      WordList list = new WordList();
      BufferedReader in = new BufferedReader(new FileReader(file));
      String line = null;
      while ((line = in.readLine()) != null){
        list.add(line);
      in.close();
      list.updated = file.lastModified();
      return list;
    WordList wordList;
    File datFile = new File("words.dat");
    File txtFile = new File("input.txt");
    if (datFile.exists()){
      ObjectInputStream input = new ObjectInputStream(new FileInputStream(datFile));
      wordList = (WordList)input.readObject();
      if (wordList.updated < txtFile.lastModified()){
        //if the text file has been updated, re-read it
        wordList = readWordList(txtFile);
        ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(datFile));
        output.writeObject(wordList);
        output.close();
    } else {
      //serialized list does not exist--create it
      wordList = readWordList(txtFile);
      ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream(datFile));
      output.writeObject(wordList);
      output.close();
    }The text file contained one random sequence of letters per line. For example:
    hwnuu
    nhpgaucah
    zfbylzt
    hwnc
    gicgwkhStats:
    Text file size: 892K
    Serialized file size: 1.1MB
    Time to read from text file: 795ms
    Time to read from serialized file: 1216ms

  • Read a character 1 at a time from a text file

    Hi all,
    I have tried the following to read 1 character at a time from a text file but it did not work;
    int buf_sz = 1;
             try
                BufferedReader br = new BufferedReader( new FileReader( "C:\\bitshift.txt", buf_sz ));
                String rd_line = null;
                while( (rd_line = br.readLine()) != null)
                    System.out.println(rd_line + "\n");
             }I could only get it to read the whole line by removing the buf_sz when creating an instance of the BufferedReader.
    How can I achieve this?
    Thanks

    The Javadoc for Reader.read()
    read
    public int read()
             throws IOException
        Read a single character. This method will block until a character is available, an I/O error occurs, or the end of the stream is reached.
        Subclasses that intend to support efficient single-character input should override this method.
        Returns:
            The character read, as an integer in the range 0 to 65535 (0x00-0xffff), or -1 if the end of the stream has been reached
        Throws:
            IOException - If an I/O error occurs

  • Utility to send text file over GPIB, one line at a time?

    We are developing instrumentation that receives data and commmands over GPIB as plain text, and returns them as well. I'd like to create GPIB "batch" files and send them over the bus, one line at a time, so I can debug the instruments' behavior. I'd also like to be able to read back responses, one line at a time.
    Is there such a utility? I've got our programmer working on something like this, but I'd hate to have him re-invent an existing wheel.
    Thanks!

    Apart from NI-SPY, I have not heard of such a utility. This may be simple to implement using proper termination. If the instrument is capable of sending line feeds or carriage return, you should be able to easily create a document. Also, using IBWRTF, you could write the ASCII file (containing the termination characters) to the bus. Depending on how you have your timeouts specified, this may be ideal.
    Alternately, if you read a static amount of data, you could IBRD chunks of data. the result may need editing for broken words at the end of a line but would achieve such a result.
    Ryan Mosley
    National Instruments, Applications Engineer
    http://www.ni.com/exchange

  • Reading in a line of text and breaking it up, complicated

    Hi all,
    At the moment im reading in a few 100 lines of text from a file, each line contains a command and a few variables which need to be set to existing variables I have created shown below;
    Int variableA ;
    Int variable B ;
    Int variable C;
    Int Variable D;
    However I have no way to know which command will go with which variables,
    On every line there will be one command and two variables..
    The possible command are; ADD, SUB, TIMES, Divide, COPY, SET
    And the text coming in look like this;
    SET A10, B15 // set each variable
    SET C33, D50 // as above
    COPY A, B // which means assign copy what ever in variableA to variableB
    ADD C, D // which mean add variableC�s contents to variableD contents
    SUB B, C // which is subtract variableC contents by what ever is in variableB
    Does anybody know of a way where I can test what the next command is, and assign the correspond variables , so far I have come up with;
    But am not sure if this is the best way to go about it, was thinking maybe I should put the text file into an array, which might make it easyer to process.
    public static void main (String [] args)
    int D = 0 ;
    int C = 0 ;
    int B = 0 ;
    int A = 0 ;
    StringTokenizer st ;
    String line ;
    String buffer = "";
    String file ="test2.txt" ;
    String name = "";
    String billy = "";
    try
    FileReader fr = new FileReader(file) ;
    BufferedReader inFile = new BufferedReader (fr) ;
    //read in one line @ a time
    buffer =inFile.readLine() ;
    while (buffer !=null)
    StringTokenizer words = new StringTokenizer (buffer) ;
    //put the buffer "line" into a tokenizer for individual characters out of a line;
    while(words.hasMoreTokens())
    String letter = words.nextToken() ;
    if(letter.charAt (0) == 'S') // if first letter = S would be SET
    System.out.println(letter) ;
    //display the token as a test output;
    if(letter.charAt (0) == 'A') // if letter = A would be ADD
    System.out.println(letter) ;
    buffer = inFile.readLine() ;
         //read in next line
    inFile.close();
    catch (FileNotFoundException e)
    System.out.println("File not found");
    catch ( IOException e)
    System.out.println("IO Exception") ;
    }

    hi,
    i think that what u r tring to do is "parsing" where u translate these primatin=ve commands to execute them, if so here what u need to do:
    Rad a line untell end of file
    for each token in the line
    if(token="SET" || token="ADD || token=""SUB")
    {       //save operation for later use
    operation=token;
    //now u expect the next token to be an operand
    token=nextToken;
    if (token!="" and token!=",")//it must be an operand
    {operand1=token;
    token=next token;
    if(token=",")//do nothing just read the nest operand
    token=nexttoken;
    else //syntax error in file, exit ;
    if (token!="" and token!=",")//checking the 2nd operand
    operand2=token;
    //now check value of operation and call the right method and send operand1,operand2 as arguments to get the result e.g
    if(opration=="ADD")
    system.println("result of addition is"+addMethod(operand1,operand2));
    hope that helps,
    Insighter

  • Read from a text file line by line

    Hi,
    I am new to Labview and I am trying to output a text file line by line. For example if my text file is
    START
    SETRPM 1000
    WAIT 10s
    RAMP RPM linear,1000,2000,2 MAF linear,5,7,2
    WAIT 5s
    RAMP RPM sine,2000,1500,3 MAF sine,7,3,3
    END
    I want it to output
    START
    SETRPM 1000
    SETMAF 5 ...and so on
    I tried modifying this code provided by Altenbach but it is still not working as I want it to. Can anyone direct me toward how I can fix this?
    Thank you!
     

    Your program does exactly what you asked it to do.  In particular, it will repeat 10 times, at one per second, reading (and storing in String) the (unchanging) data that you bring in on the Shift Register.  This data will consist of the first line of the (assumed-)multi-line file you specified.
    I suppose your question is "Why is it only showing me one line?"  This is where it really pays to "Read the Directions Carefully" (or, in this case, carefully read the Help for Read from Text File).
    Bob Schor
    P.S. -- I pointed your code at a text file of 7 lines on my PC.  When I made a few small changes (including doing away with the silly For loop that shows the same thing over and over) , I got out an array, size 7, containing the lines of text.

  • Reading a text file line by line and splitting each line into an array

    I have a text file that I want to read in line by line and within each line, I want to do some processing. I have a file like the following:
    apples||oranges||bananas||grapes
    cars||trucks||planes||boats
    And I want to end up with an array such that
    First...
    item(0) = apples
    item(1) = oranges
    item(2) = bananas
    item(3) = grapes
    Then move onto the next line with item getting cleared each time. Can anyone offer any ideas on how do to this? I am unclear on reading line by line and then also splitting into an array as I am new to this.
    Thanks.

    For reading a text file in line by line, you want to use a FileReader (java.io.FileReader)
    If you wrap it in a Buffered reader, you can call readLine() and get the file one line at a time.
      File file = new File("C:\myFile.txt");
      BufferedReader in = new BufferedReader(new FileReader(file));
      String s = in.readLine();
      while (s != null){
        // string handling here
        s = in.readLine();
      }For the second part, you probably want to look at the method String.split() which should split your string up into an array for you. Check out the API for java.lang.String
    Check out the

  • Reading and Writing from a text file at the same time

    I know who to use the Scanner and PrintWriter to read from and write to a .txt file. But these are limited. How can I read and write at the same time? Such as open a file and change every third character or change every second word to something else and then write it back. I found this [http://java.sun.com/docs/books/tutorial/essential/io/|http://java.sun.com/docs/books/tutorial/essential/io/] but its a little over my head. Is this the only way to do it?

    wrote:
    You are using buffered reads and writes I would assume, right? Also, how do you think most programs handle this sort of thing? I don't believe I'm using buffering.
    My code looks something like this
    //...necessary imports
    //then
    Scanner inFile = new Scanner (new file("filename1.txt"));
    PrintWriter outFile = new PrintWriter ("filename2.txt");
    //then stuff like
    int x = inFile.hasNextInt();
    outFile.println(x);
    camickr wrote:If you are changing the data "in place", that is none of the data in the file is shifted, then you can use a RandomAccessFile.
    Otherwise, you've been given the answer above.What is RandomAccessFile? Is it what I have a link to? Basically what I do is I write a bunch of numbers to a txt file and then change the numbers I don't need anymore to 0. So say I had 0 1 2 3 4 5 6 7 etc. I would like to to open the txt file and change every second one to 0 so then I'd have only odd numbers and 0s.
    I looked at the documentation for RandomAccessFile and it seems like it might be what I need.
    Thankyou both for your help so far. I took a java course in high school and they only taught me one way to get data from text files and that is what I just showed you. So maybe this questions are really stupid. lol
    Edited by: qw3n on Jun 13, 2009 7:46 PM

  • How to read the last line in a text file using text_io?? please help

    Dear all
    I made a procedure that append text into a text file on the operating system.
    the text file grows rapidly. It contains now about 200,000 line . I need to read the last line only . In other wprds i need to go direct to the last line to read some values. Is it possible??
    Please help

    Hello,
    If you know the number of the line you want to read, I can sugget you to use the MORE dos command or the TAIL unix command that redirect to a temporary text file
    Example to create a file that contains the 200010th last lines :
    (Client)Host( 'MORE the_file_name.txt +200010 > small_file.txt') ;So you have only to read the small file with the TEXT_IO functions.
    Francois

  • How to only read the last line in the text file by using BufferedReader ?

    Dear all,
    Hello, I am new to Java. Do anybody know how to read the last line (this is the last record) in the text file.The method I am now using is reading from the first line until I reach the last line in the text file. Thank you!!
    BufferedReader br = new BufferedReader(new FileReader("c:\\sdk1.4.1\\bin\\dbExport.txt"));
    DataInputStream in = new DataInputStream(new FileInputStream("c:\\sdk1.4.1\\bin\\dbExport.txt"));
    String input;
    String firstinput;
    String secondinput;
    int count=90;
    int year=1955;
    while ((input = br.readLine()) != null) {
    firstinput = input.substring(0, 10);
    secondinput = input.substring(10);
    String insertStore1 = ("INSERT INTO AUTHORS " +
    "VALUES ('" + count + "', '" + firstinput + "', '" + secondinput + "', 1955)");
    System.out.println(insertStore1);
    int result = stmt.executeUpdate(insertStore1);

    I suppose you could use a java.io.RandomAccessFile.

  • How to read the whole text file lines using FTP adapter

    Hi all,
    How to read the whole text file lines when error occured middle of the text file reading.
    after it is not reading the remaining lines . how to read the whole text file using FTP adapter
    pls can you help me

    Yes there is you need to use the uniqueMessageSeparator property. Have a look at the following link for its implementation.
    http://download-west.oracle.com/docs/cd/B31017_01/integrate.1013/b28994/adptr_file.htm#CIACDAAC
    cheers
    James

  • Pages is sending my documents in docx format, but windows unable to open them. They arrive blank or can only be read as a single line at a time. When view prior to sending the document is divided with black lines after each sentence.

    Pages is sending my documents in docx format, but windows unable to open them. They arrive blank or can only be read as a single line at a time. When viewed prior to sending, the document is divided with black lines after each sentence.

    Windows will only be able to open these if you have Word 2007+. Older versions of Word, for example Word 2003 would require a compatibility pack.
    Perhaps you can try 'Saving As' a different file type instead?
    Regards,
    Steve

Maybe you are looking for

  • My sound is coming from my built in speakers instead of through the headphone jack.

    I have an Envy 15 1270ca and last night it froze while I was listening to music, forcing me to manually shut it off by holding down the power button. When the computer came back on, my sound was coming out of my built-in speakers instead of my extern

  • XSQL and insert

    This may sound like a dumb question but I can't figure out how to associate the xml doc with the xsql doc to do an insert. Here are my files: XSQL - filename custins.xsql <?xml version="1.0" ?> <xsql:insert-request table="CUSTOMERS_OV" connection="de

  • Transfering itunes library from a windows computer to a mac computer. HELP!

    i have all my itunes on a older windows computer and was wondering if there was any way to transfer that to my new mini mac?? i have looked and they have external hard drives but seems like they have to be formatted for one or the other.. i guess if

  • CUEAC Server: how long do we need purge the database of SQL?

    hi today all our attendant consoles of switch board were out of service, later i found the error from the server log file and event viewer: SQL.Exception(p, or setting autogrowth on for existing files in the filegroup. Could not allocate space for ob

  • File.renameTo

    Hi, Does file.renameTo work on AIX Server,and how much time will this method take to move a file of 35 million records? Regards KK