Solved

How to read from a file ?

Posted on 2004-04-04
9
171 Views
Last Modified: 2010-03-31
Could you please give me the source code for a program that reads data from a file.

Example - My data.txt contains this:

1     2     3     4     5
 
Now: I want to read each number, knowing that there is a white space in between each os them. Later on the program should print in the screen:
1
2
3
4
5

Can you please code this for me and post it ?

0
Comment
Question by:digi_mind
  • 3
  • 3
9 Comments
 
LVL 14

Expert Comment

by:Tommy Braas
ID: 10751268
You need a BufferedReader to read the line of numbers. Then you need a StringTokenizer to split the numbers up into substrings. And finally, if you need the actual values of the numbers, they need to be parsed using the Integer class. School assignment?
0
 

Author Comment

by:digi_mind
ID: 10751293
Yes, actually is a program that I have to make for school, but the main topic is not java, but c++.

Can you code it for me ?
0
 
LVL 30

Expert Comment

by:GrandSchtroumpf
ID: 10751316
if it's for school we cannot provide you with code.
post the code you have written so far and we can guide you.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:digi_mind
ID: 10751386
This is what I have:
******************
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Random;
import java.util.StringTokenizer;

public class WriteText {
    /**     * Constructor for WriteText.     */    
   public WriteText() {        
      super();    
   }    
   
   public static void main(String[] args) {            
     
      String SEP = " ";      
      String FILENAME = "data.txt";                
     
      try {                                  
       StringTokenizer st = null;                  
       BufferedReader reader = new BufferedReader(new FileReader(FILENAME));                  
       String s = null;                  
       String[][] myArray = new String[1][6];                  
       int col;                  
       int row;                  
       String element = null;            
      
       while ((s = reader.readLine()) != null ) {                  
          st = new StringTokenizer(s,SEP);                  
            element = st;          
       }            
       System.out.println("VALUE : " + element );    
       reader.close();      
      }catch(Exception fe) {                  
         fe.printStackTrace(System.out);            
      }    
   }
}
**********************************************
My data.txt file contains 7 strings:
one two three four five six seven

I would like to have this strings in an array, then print in the screen position 4 of the array, so I will print:

four

Give me a hand, I am almost there...

0
 

Author Comment

by:digi_mind
ID: 10751403
My new code and better:
************************
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.PrintWriter;
import java.util.Random;
import java.util.StringTokenizer;

public class WriteText {
    /**     * Constructor for WriteText.     */    
   public WriteText() {        
      super();    
   }    
   
   public static void main(String[] args) {            
     
      String SEP = " ";      
      String FILENAME = "data.txt";                
     
      try {                                
      
       StringTokenizer st = null;                  
       BufferedReader reader = new BufferedReader(new FileReader(FILENAME));                  
       String s = null;                  
       String[] myArray = new String[3];                  
       int col = 0;                  
       String element = null;            
      
       while ((s = reader.readLine()) != null ) {                  
          st = new StringTokenizer(s,SEP);                  
            element = (String) st.nextElement();
          myArray[col] = element;
          col = col + 1 ;          
       }            
       System.out.println("VALUE : " + myArray[0] );    
       reader.close();      
      }catch(Exception fe) {                  
         fe.printStackTrace(System.out);            
      }  
   }
}
**************************************************

The problem is that when I print myArray[1] I get a value of null... and when I print myArray[0] I get "one" so the first value works...

i need to be able to store the other values in my array .

How ?
0
 
LVL 30

Accepted Solution

by:
GrandSchtroumpf earned 55 total points
ID: 10751435
>      while ((s = reader.readLine()) != null ) {                  
>         st = new StringTokenizer(s,SEP);                  
>            element = st;          
>      }            

here, you read each line of the file
and create a new StringTokenizer for each line.
what you probably want to do is to read the first line only.
or maybe read each line and test if the line is empty.  if the line is not empty, you create your StringTokenizer, otherwise you read the next line.
Once you have created your StringTokenizer, you should loop on the "Enumeration" (StringTokenizer implements Enumeration) and copy the values into your Array.

another method you could use is the split() method of String that returns a String[], but it might be a little complicated because it uses regular expressions.  continue with StringTokenizer for now.
0
 
LVL 30

Expert Comment

by:GrandSchtroumpf
ID: 10751443
you need to loop on your enumeration (while loop):
use  <  st.hasMoreElements();  >  to test if you have more elements.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
groupNoAdj 7 85
backtracking recursion  code 19 53
couple of eclipse 5 21
servlet example issue 6 30
For beginner Java programmers or at least those new to the Eclipse IDE, the following tutorial will show some (four) ways in which you can import your Java projects to your Eclipse workbench. Introduction While learning Java can be done with…
Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Viewers learn about the “while” loop and how to utilize it correctly in Java. Additionally, viewers begin exploring how to include conditional statements within a while loop and avoid an endless loop. Define While Loop: Basic Example: Explanatio…
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.

912 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now