Java读取文件并将文本存储在数组中

我知道如何使用Scanner和File IOException读取Java文件,但我唯一不知道的是如何将文本作为数组存储在文件中。

这是我的代码snippet

  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(); 

这是我的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 

存储为字符串:

 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 temps = new LinkedList(); List temps = new ArrayList(); // 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); } } } 

对于花车:

 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 temps = new LinkedList(); List temps = new ArrayList(); // 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); } } } 

如果您不知道文件中的行数,则没有用于初始化数组的大小。 在这种情况下,使用List更有意义:

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

之后,如果需要,可以复制到数组:

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

编辑

看起来你想创建一个float数组,为它创建一个float数组

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

然后你的浮点阵看起来像

 content[0] = 70.3 content[1] = 70.8 content[2] = 73.8 content[3] = 77.0 and so on 
 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]); } } 

我发现这种从文件中读取字符串的方式最适合我

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

“完整”将是所有线路的完整组合。 如果你想在文本行之间添加换行符,你可以完成full+=st+"\n";

只需将整个文件读入StringBuilder,然后按空格分隔String。 你将得到一个String数组。

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

我用这个方法:

 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)); } }