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();
}

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

PS Send は私のクラス名です

4

2 に答える 2

5

整数除算を行っており、分子が分母よりも小さい場合、結果は0になります。

二重分割で試してください:

double uploadSize = 1.0 * Send.getSize(path_to_file) / 1024 / 1024;
于 2012-12-20T12:38:37.387 に答える
1

getSize()を呼び出し、ダイアログ関数の外部で変数を設定します。この変数は、ダイアログ関数の内部でアクセスできます。または、変数として関数に渡します。

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

于 2012-12-20T12:33:47.903 に答える