2012-02-24 122 views
-1

下面的代碼未執行。我把它叫做NameManager.main(fsitem);來自我的班級。甚至沒有調試顯示在堆棧跟蹤中,它不會創建該文件。我究竟做錯了什麼?Java代碼不執行

public class NameManager { 
... 
public static void main(ArrayList<String> fsitem) { 
    for (int i = 0; i < fsitem.size(); i++) { 
     try { 
      File root = new File(Environment.getExternalStorageDirectory() 
        .getName() + "/" + fsitem.get(i)); 
      if (root.canWrite()) { 
       if (!root.exists()) { 
        Log.d("NameManager.java", 
          (root.getName() + " exists and is writable.")); 
        File namefile = new File(root, ".name"); 
        FileWriter namewriter = new FileWriter(namefile); 
        BufferedWriter out = new BufferedWriter(namewriter); 
        out.write("image_" 
          + (i++) 
          + "%n(Autogenerated Name)%[email protected]"); 
        out.close(); 
       } else { 
        Log.d("NameManager.java : ", 
         (root.getName() + " already exists.")); 
       } 
      } 
     } catch (IOException e) { 
      Log.e("NameManager.java : ",("Error!! Not Writable!!" 
        + Environment.getExternalStorageDirectory().getName() 
        + "/" + fsitem.get(i))); 
     } 
    } 
... 
} 
+1

我根本不熟悉Android,但是因爲它是從Java派生的,所以有一個問題:您確定允許使用'main'方法的這種簽名嗎? – 2012-02-24 11:05:53

+0

fsitem有空嗎?在循環之前添加一些記錄*以顯示大小... – 2012-02-24 11:06:00

+0

它不是空的。代碼編譯,簽名必須允許? – 2012-02-24 11:12:07

回答

2

這段代碼檢查閹根存在並且可寫(.canWrite()),並且不存在(!.exists())。兩者在一起是不可能的,所以什麼都不會發生。

5

主要的方法簽名必須是:public static void main(String[])ArrayList<String>作爲參數。請參閱"Hello World!" from Oracle tutorial


編輯:與OP聊天討論後,原來他叫NameManager.NameManager(fsitem);代替NameManager.main(fsitem);

+2

這不是他的主要課程。正如他在第二句中所說的那樣,他自己正在調用這種方法。 – nhaarman 2012-02-24 11:07:54

+0

我是新來的java你會告訴我如何使'ArrayList fsitem'爲格式'String [] args' – 2012-02-24 11:08:28

+1

@BinoyBabu你確定'NameManager.main(fsitem);'被調用並執行?嘗試在第一行('for')放置一個brakpoint並調試你的代碼,甚至把'System.out.println(「in this!」);'befor loop ... – Xaerxess 2012-02-24 11:15:13

1

幾個可能的原因:

  1. fsitem數組爲空。
  2. (root.canWrite())失敗。
  3. 您確定該方法正在被調用嗎?
+0

1.它不是,2.應該顯示在堆棧中,3。是的,它被稱爲'NameManager.main(fsitem)'; – 2012-02-24 11:10:35

+0

如果2.失敗,它不會顯示在日誌中,沒有else子句。 – nhaarman 2012-02-24 11:11:54

+0

讓我添加更多的調試。 BRB – 2012-02-24 11:13:27

1

利用這個,而不是你的代碼,希望能幫助