2012-12-20 10 views
5

からファイルサイズを取得することはできません。アンドロイドは、私は、ファイルサイズを決定するには、次の方法を持っているダイアログ

public static long getSize(String path) { 

    File file = new File(path); 

    if (file.exists()) { 
     long size = file.length(); 

     return size; 
    } else { 
     Log.e("zero size", "the file size is zero!"); 
     return 0; 

    } 

は、今私は(コードが完了していない)は、以下の方法でダイアログを表示します:

public void gimmeDialog(String path_to_file) { 

    final Dialog dialog = new Dialog(this); 
    dialog.setContentView(R.layout.dialog); 
    dialog.setTitle("Confirm"); 

    TextView text = (TextView) dialog.findViewById(R.id.txtUploadInfo); 

    Button dialogButtonOK = (Button) dialog.findViewById(R.id.btnDialogOK); 

    long uploadSize = Send.getSize(path_to_file)/1024/1024; 

    text.setText("You are about to upload " 
      + Long.toString(uploadSize) 
      + " MB. You must accept the terms of service before you can proceed"); 

    dialogButtonOK.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      dialog.dismiss(); 
     } 
    }); 

    dialog.show(); 
} 

問題はuploadSizeダイアログ関数の外に呼び出されたときに方法のgetSize()が正しいファイルサイズを返しても、常にゼロであるということです。指定された文字列のパスは正しいです。理由は何でしょうか?

P.S. Sendは私のクラス名です

+0

は、1メガバイト、あなたのファイル大きいですか? –

答えて

5

あなたは整数の除算を作っているとnumenatorが分母よりも小さい場合、結果は

0が二部門で試してみてくださいです:

double uploadSize = 1.0 * Send.getSize(path_to_file)/1024/1024; 
1

getSize()を呼び出し、ダイアログ関数内でアクセス可能な変数をダイアログ関数外に設定します。あるいは、変数として関数に渡します。

これは実際に問題を説明していませんが、解決しています。

+0

ちょうどあなたが知っている;コメント内の質問をし、実際の回答の回答を保持する。彼らは正当な質問です、ちょうど間違った形式で尋ねる:) – dutt

+0

おかげで、チップのおかげで。ここで私が提案していることが問題を解決できると思ったので、答えに入れました。多分私は言い返すべきですか?または削除してコメントとして追加するだけですか? – breadbin

+0

WTF私はばかです。もちろん、それはファイルサイズをダイアログに渡すより良い方法です。ありがとう、ありがとう。 – Droidman

関連する問題