在java中,操作文件File是一個對象,所以打開創建文件之后不用進行關閉,但是如果寫入讀取文件內容了,需要關閉流。
在程序里操作ftp,sftp時一定要關閉channelSftp和ftpclient等,操作文件時FileInputStream,FileOutputStream等輸入輸出流也要關閉。
關閉操作一定要放在finally里。
如果操作頻繁而沒有關閉的話,一般會報錯 java.net.SocketException: 打開的文件過多,這時候詳細檢查程序,檢查sftp或者ftp工具類,檢查處理類的try-catch-finally是否有邏輯問題。
在linux服務器上可以使用
ulimit -a
查看當前系統設置的最大句柄數。
使用
lsof -p PId | wc -l
查看某程序打開了多少文件。