2012-02-24 139 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

利用这个,而不是你的代码,希望能帮助