1
我有小法能夠計算出一個目錄的大小增加其價值。Java中,局部變量沒有任何理由
每當我的程序跨越if
語句,sum
增加其值。我嘗試在sum +=
行上設置斷點,但即使sum
的值增加,執行也不會停止。
如果我刪除sum +=
行然後sum
永不改變,所以我相信這條線是sum
正在增加。
可能會發生什麼?
我有小法能夠計算出一個目錄的大小增加其價值。Java中,局部變量沒有任何理由
每當我的程序跨越if
語句,sum
增加其值。我嘗試在sum +=
行上設置斷點,但即使sum
的值增加,執行也不會停止。
如果我刪除sum +=
行然後sum
永不改變,所以我相信這條線是sum
正在增加。
可能會發生什麼?
也許另一個線程正在搞亂那個變量。一個非常簡單的變化,可以讓這個線程安全的,並取回你的理智也:
private static long getDirSize(File srcDir) {
long sum = 0;
if (srcDir.isFile()) {
sum += srcDir.length();
} else {
for (File curFile : srcDir.listFiles()) {
sum += getDirSize(curFile);
}
}
return sum;
}
這是計算大小的正確方法。然而,這不會解決OP的實際問題......但是根據問題中的信息,這個問題不可診斷/可解決。 –
這似乎是一個愚蠢的問題,但你在調試模式下啓動你的應用程序,如果斷點雙重檢查插入在這個確切的線? – Keammoort
你的斷點在其他線上工作嗎? – user140547
您確定您正在查看相同的'sum'變量嗎?你有一個名爲'sum'的成員變量嗎?你有沒有嘗試在方法的第一行設置一個斷點,並逐步完成它? –