Java reads the file and stores the text in an array

I know how to read a file using Java using Scanner and File IOException, but the only thing I don't know is how to save text in files as an array.

Here is the snippet my code:

  public static void main(String[] args) throws IOException{ // TODO code application logic here // // read KeyWestTemp.txt // create token1 String token1 = ""; // for-each loop for calculating heat index of May - October // create Scanner inFile1 Scanner inFile1 = new Scanner(new File("KeyWestTemp.txt")); // while loop while(inFile1.hasNext()){ // how can I create array from text read? // find next line token1 = inFile1.nextLine(); 

Here is what my KeyWestTemp.txt file KeyWestTemp.txt :

 70.3, 70.8, 73.8, 77.0, 80.7, 83.4, 84.5, 84.4, 83.4, 80.2, 76.3, 72.0 
+6
source share
7 answers

Saved as a string:

 public class ReadTemps { public static void main(String[] args) throws IOException { // TODO code application logic here // // read KeyWestTemp.txt // create token1 String token1 = ""; // for-each loop for calculating heat index of May - October // create Scanner inFile1 Scanner inFile1 = new Scanner(new File("KeyWestTemp.txt")).useDelimiter(",\\s*"); // Original answer used LinkedList, but probably preferable to use ArrayList in most cases // List<String> temps = new LinkedList<String>(); List<String> temps = new ArrayList<String>(); // while loop while (inFile1.hasNext()) { // find next line token1 = inFile1.next(); temps.add(token1); } inFile1.close(); String[] tempsArray = temps.toArray(new String[0]); for (String s : tempsArray) { System.out.println(s); } } } 

For floats:

 import java.io.File; import java.io.IOException; import java.util.LinkedList; import java.util.List; import java.util.Scanner; public class ReadTemps { public static void main(String[] args) throws IOException { // TODO code application logic here // // read KeyWestTemp.txt // create token1 // for-each loop for calculating heat index of May - October // create Scanner inFile1 Scanner inFile1 = new Scanner(new File("KeyWestTemp.txt")).useDelimiter(",\\s*"); // Original answer used LinkedList, but probably preferable to use ArrayList in most cases // List<Float> temps = new LinkedList<Float>(); List<Float> temps = new ArrayList<Float>(); // while loop while (inFile1.hasNext()) { // find next line float token1 = inFile1.nextFloat(); temps.add(token1); } inFile1.close(); Float[] tempsArray = temps.toArray(new Float[0]); for (Float s : tempsArray) { System.out.println(s); } } } 
+12
source

If you do not know the number of lines in your file, you do not have the size by which you can initialize the array. In this case, it makes sense to use List:

 List<String> tokens = new ArrayList<String>(); while (inFile1.hasNext()) { tokens.add(inFile1.nextLine()); } 

After that, if you need, you can copy to the array:

 String[] tokenArray = tokens.toArray(new String[0]); 
+2
source
 int count = -1; String[] content = new String[200]; while(inFile1.hasNext()){ content[++count] = inFile1.nextLine(); } 

EDIT

It looks like you want to create a floating point array, for this create a floating point array

 int count = -1; Float[] content = new Float[200]; while(inFile1.hasNext()){ content[++count] = Float.parseFloat(inFile1.nextLine()); } 

then your float array will look like

 content[0] = 70.3 content[1] = 70.8 content[2] = 73.8 content[3] = 77.0 and so on 
0
source
 while(inFile1.hasNext()){ token1 = inFile1.nextLine(); // put each value into an array with String#split(); String[] numStrings = line.split(", "); // parse number string into doubles double[] nums = new double[numString.length]; for (int i = 0; i < nums.length; i++){ nums[i] = Double.parseDouble(numStrings[i]); } } 
0
source

Just read the entire file in StringBuilder, and then split the line into a dot after the space. You will get an array of strings.

 Scanner inFile1 = new Scanner(new File("KeyWestTemp.txt")); StringBuilder sb = new Stringbuilder(); while(inFile1.hasNext()) { sb.append(inFile1.nextLine()); } String[] yourArray = sb.toString().split(", "); 
0
source

I found this way of reading lines from files to work better for me

 String st, full; full=""; BufferedReader br = new BufferedReader(new FileReader(URL)); while ((st=br.readLine())!=null) { full+=st; } 

"full" will be a complete combination of all lines. If you want to add line breaks between lines of text that you would do full+=st+"\n";

0
source

I am using this method:

 import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; public class TEST { static Scanner scn; public static void main(String[] args) { String text = ""; try{ scn = new Scanner(new File("test.txt")); }catch(FileNotFoundException ex){System.out.println(ex.getMessage());} while(scn.hasNext()){ text += scn.next(); } String[] arry = text.split(","); //if need converting to float do this: Float[] arrdy = new Float[arry.length]; for(int i = 0; i < arry.length; i++){ arrdy[i] = Float.parseFloat(arry[i]); } System.out.println(Arrays.toString(arrdy)); } } 
-1
source

Source: https://habr.com/ru/post/957620/


All Articles