2012-02-24 17 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」メソッドのそのような署名は許可されていますか? –

+0

万一、fsitemが空白になっていませんか?いくつかのロギングをループの前に追加して、サイズを表示してください。 –

+0

それは空ではありません。コードがコンパイルされ、署名が許可されていなければなりませんか? –

答えて

2

この作品を助ける存在し、(.canWrite())書き込むことができ、かつ存在しません。 (!.exists())。どちらも一緒にはできないので、何も起こりません。

5

メソッドシグネチャはでなければならない:public static void main(String[])ないArrayList<String>引数として。 "Hello World!" from Oracle tutorialを参照してください。


EDIT:OPとのチャット上での議論の後、それは彼がNameManager.main(fsitem);代わりNameManager.NameManager(fsitem);と呼ばれることが判明しました。

+2

これは彼のメインクラスではありません。彼は2番目の文で言うように、この方法を自分自身と呼んでいます。 – nhaarman

+0

私はjavaに慣れていますので、 'ArrayList fsitem'を' String [] args'の形式にする方法を教えてください。 –

+1

@BinoyBabu 'NameManager.main(fsitem);'が呼び出されて実行されていますか?最初の行( 'for')にbrakpointを置き、コードをデバッグするか、' System.out.println( "これが!"); 'befor loop ... – Xaerxess

1

可能性のカップル:

  1. あなたfsitem配列が空です。
  2. (root.canWrite())が失敗します。
  3. メソッドが呼び出されていますか?
+0

1.そうではありません。2.スタックに表示する必要があります。3。はい、 'NameManager.main(fsitem)'と呼ばれています。 –

+0

2.が失敗した場合、ログには表示されません。else節はありません。 – nhaarman

+0

デバッグを追加しましょう。 brb –

1

使用この代わりにあなたのコードを、希望はルート天気をコードチェックの

関連する問題