2014-10-12 88 views
2

所以基本上我想要做的是讀取這個名爲Products.csv的文件,然後我想將它的每一行(445行)存儲到一個長度爲445的數組。如何讀取文件中的行並將它們存儲到數組中

由於某種原因,如果我鍵入System.out.println(lines [2]);例如,它會讀取文件的第2行,但如果我在循環中使用循環讀出所有包含此代碼System.out.println(lines [a])的行,它會顯示所有行null null null ....

public class Lab2 
{ 
     String [] lines = new String [446]; 
     int x = 0; 
    File inFile; 

    public long ReadFile(String sfile) throws IOException 
    { 
     inFile = new File(sfile); 
     BufferedReader reader = new BufferedReader(new FileReader(inFile)); 
     String sline = null; 
     while ((sline=reader.readLine()) != null) 
     { 
       lines[x]=sline; 
       x++; 
     } 
     reader.close(); 
     return inFile.length(); 
     } 

     public void OutputLines (String [] s) 
     { 
      for (int a=0;a<s.length;a++) 
      { 
       System.out.println (s[a]); 
      } 
     } 

    public static void main(String[] args) 
    { 
     try 
     { 
      Lab2 read = new Lab2(); 
      read.ReadFile("Products.csv"); 

     } 
     catch (IOException e) 
     { 
      System.out.println(e.getMessage()); 
     } 

       Lab2 reader = new Lab2(); 
       reader.OutputLines(reader.lines); 
     } 
} 

回答

3

您正在將線條讀入一個Lab2對象,然後創建一個全新的不同Lab2對象以顯示結果。不要這樣做,因爲第二個Lab2對象沒有填充數據,因此它的數組填充了空值。而是使用相同的 Lab2對象,用於讀取顯示。

變化

public static void main(String[] args) 
{ 
    try 
    { 
     Lab2 read = new Lab2(); 
     read.ReadFile("Products.csv"); 

    } 
    catch (IOException e) 
    { 
     System.out.println(e.getMessage()); 
    } 

      Lab2 reader = new Lab2(); 
      reader.OutputLines(reader.lines); 
    } 

public static void main(String[] args) { 
    try { 
     Lab2 read = new Lab2(); 
     read.ReadFile("Products.csv"); 

     // *** display data from the same Lab2 object *** 
     read.OutputLines(); // this shouldn't take a parameter 
    } catch (IOException e) { 
     e.printStacktrace(); 
    } 
+0

哦,是我琢磨出來了。謝謝btw。我現在的最後一項工作是在每行中劃定「,」,並用製表符替換它。有關如何替換標籤的提示?我無法弄清楚 – 2014-10-12 01:49:42

相關問題