国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java使用jsch處理軟鏈接判斷是否文件夾

這篇具有很好參考價值的文章主要介紹了java使用jsch處理軟鏈接判斷是否文件夾。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

前言

這一次主要是碰到一個問題。因為使用jsch去讀取文件的時候,有一些文件它是使用軟鏈接制作的一個映射。因為這里面有一個問題。如果它是軟鏈接你就無法判斷他到底是文件。還是文件夾?因為他沒有提供可以直接讀取的方法,用權(quán)限信息去判斷,文件和文件夾都是l開頭,所以這一篇博客的主要目的是介紹如何去處理軟鏈接。判斷是實際的文件還是文件夾。

遇到的問題

從Jsch的參數(shù)來看,首先這里他提供的一些Is link是為true的。但是判斷是文件還是文件夾,全部都會frse,這個就比較苦惱了。一開始我還在想,他會不會沒有提供對應(yīng)的方法?這樣我就很難搞了,我還得去找作者去提一手,然后就讓他去解決,這時間可就太漫長了。

java使用jsch處理軟鏈接判斷是否文件夾,java,jsch,linux

接著這是Linux系統(tǒng)的一個文件目錄??梢钥吹接幸恍┠夸洠亲隽艘粋€鏈接映射的。

java使用jsch處理軟鏈接判斷是否文件夾,java,jsch,linux

實際測試發(fā)現(xiàn)他是軟件鏈接目錄isDirisFile方法都是false哦,我明白了在這種情況下,可以嘗試使用SftpATTRS對象的getAttrs()方法來獲取軟鏈接路徑,然后通過readlink()方法來確定實際指向的文件或目錄的屬性信息,然后判斷實際文件或目錄的類型。

解決方案

仔細的搜索之下。他可以先去讀取這個文件的一個鏈接,獲得實際的路徑。有了這個鏈接的實際路徑就好辦了,我就可以根據(jù)他的實際的路徑去判斷它到底是文件還是文件夾,雖然復(fù)雜繁瑣了一點,但是總比沒有好吧??偹阋菜闶且粋€解決方案吧。

示例代碼

以下是一個示例代碼,演示了如何使用JSch庫來獲取軟鏈接指向的實際文件或目錄的屬性信息:

import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpATTRS;

public class SftpExample {
    public static void main(String[] args) {
        String host = "your_hostname";
        String username = "your_username";
        String password = "your_password";

        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(username, host, 22);
            session.setPassword(password);
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();

            ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");
            channel.connect();

            SftpATTRS attrs = channel.lstat("/path_to_symbolic_link");

            if (attrs.isLink()) {
                String targetPath = channel.readlink("/path_to_symbolic_link");
                SftpATTRS targetAttrs = channel.lstat(targetPath);

                if (targetAttrs.isDir()) {
                    System.out.println("Symbolic link points to a directory");
                } else {
                    System.out.println("Symbolic link points to a file");
                }
            }

            channel.disconnect();
            session.disconnect();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在這個示例中,我們首先通過SftpATTRS對象的isLink()方法判斷是否是軟鏈接,然后使用channel.readlink()方法獲取軟鏈接指向的實際文件或目錄的路徑,并通過channel.lstat()方法獲取其屬性信息,最后判斷實際文件或目錄的類型。

總結(jié)一下

一開始我都打算直接用文件類去讀取這個路徑,去判斷它到底是否方是否是文件或者文件夾。但是這樣就會有一個問題。如果我用文件去讀取的這個文件跟我這個程序運行的用戶相沖突的話,這結(jié)果就不太準確,因為如果用程序的用戶去讀取,可能會存在一個權(quán)限問題。但是這個讀取鏈接的方式就完美的解決了這個問題。總算解決了一個痛點。

最后

點贊關(guān)注評論一鍵三連,每周分享技術(shù)干貨、開源項目、實戰(zhàn)經(jīng)驗、國外優(yōu)質(zhì)文章翻譯等,您的關(guān)注將是我的更新動力

我正在參與2024騰訊技術(shù)創(chuàng)作特訓(xùn)營第五期有獎?wù)魑?,快來和我瓜分大獎?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-813607.html

到了這里,關(guān)于java使用jsch處理軟鏈接判斷是否文件夾的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Java如何判斷某文件目錄是否存在

    在java中如何判斷某文件所在的目錄是否存在,若不存在創(chuàng)建目錄 可以通過國使用 File 類的 getParentFile() 方法來獲取文件所在的目錄,并通過 exists() 方法來判斷該目錄是否存在,若不存在,通過 mkdirs() 方法創(chuàng)建目錄,以下為實例 或直接簡寫

    2024年02月12日
    瀏覽(176)
  • 【Java SE】判斷兩個文件內(nèi)容是否相同的多種方法

    逐字節(jié)比較文件內(nèi)容。這種方法適用于小文件,但對于大文件會比較耗時。 計算文件的哈希值(如 MD5、SHA-256 等),然后比較兩個文件的哈希值。如果哈希值相同,則可以認為文件內(nèi)容相同。這種方法適用于大文件,因為只需要比較哈希值而不是整個文件內(nèi)容。 通過使用

    2024年02月07日
    瀏覽(100)
  • Java文件處理(一):創(chuàng)建文件、遍歷文件夾、刪除文件/文件夾

    本篇以代碼為核心,在實踐中自學(xué)吧年輕人~ 要進行文件處理肯定需要 File 類啦。 File 的實例是一個實例(?),但是可以鏈接到本地的文件、文件夾,并對它們進行操作。 從下面的一些示例中可以看到,同一份本地文件可以擁有多個File對象;同時,構(gòu)造一個File對象時傳入

    2024年02月05日
    瀏覽(40)
  • java 處理常量字符串過長 & springboot 項目讀取 resouces 文件夾下的文件內(nèi)容

    java 處理常量字符串過長 & springboot 項目讀取 resouces 文件夾下的文件內(nèi)容

    項目里面有一長串的加密字符串(最長的萬多個字符),需要拼接作為參數(shù)發(fā)送給第三方。 如果我們使用 枚舉 定義的話,idea 編譯的時候就會出現(xiàn)編譯報錯 網(wǎng)上還有一個說法,說是編譯器問題,修改 idea 工具的編譯為 eclipse 即可。 但是結(jié)果我仍然不滿意,所以我決定把他放在

    2023年04月13日
    瀏覽(92)
  • IDEA項目java文件夾出現(xiàn)source root標記怎么處理

    IDEA項目java文件夾出現(xiàn)source root標記怎么處理

    在復(fù)制項目時出現(xiàn)如下標記 同時src下面無啟動入口 解決辦法如下: 1、選中項目,右鍵—open module Settings----Modules----選中項目—右邊刪除后 2.點擊Apply----- OK 這時回到項目能看到目錄正常,自動生成了啟動入口,但是有些依賴沒有。 3.通過Maven重新加載依賴 完成!

    2024年02月16日
    瀏覽(23)
  • 【Shell-HDFS】使用Shell腳本判斷HDFS文件、目錄是否存在

    【Shell-HDFS】使用Shell腳本判斷HDFS文件、目錄是否存在

    本文主要講述如何使用 Shell 腳本判斷 HDFS 文件或目錄是否存在,算是一個小技巧吧,這幾天做 distcp 的時候用到的,因為要判斷 HDFS 中是否存在某個目錄。 Shell腳本測試: 1、測試路徑是否存在。 2、測試目錄是否存在。 3、測試文件是否存在。 4、測試路徑大小是否大于0。

    2023年04月24日
    瀏覽(97)
  • C++ 判斷路徑為文件夾還是文件

    頭文件 Path ? 指定標識文件的路徑名。根據(jù)所使用的接口,此名稱的解釋不同。如果指定了DirFileDescriptor并且Path是一個相對路徑名,那么Path被認為是相對于DirFileDescriptor指定的目錄的。 Buffer 指定指向在其中返回信息的狀態(tài)結(jié)構(gòu)的指針。stat結(jié)構(gòu)在sys/stat.h文件中描述。 成功完

    2024年02月01日
    瀏覽(539)
  • 用python實現(xiàn)檢查一個文件夾中所有word文件內(nèi)容是否重復(fù)

    要檢查一個文件夾中所有Word文件的內(nèi)容是否重復(fù),你可以使用Python的 python-docx 庫來讀取Word文件的內(nèi)容,并使用Python的集合數(shù)據(jù)結(jié)構(gòu)來檢查重復(fù)項。 以下是一個示例代碼,演示如何實現(xiàn)這個功能: python復(fù)制代碼 import os from docx import Document def get_word_files(directory): \\\"\\\"\\\"獲取指定目

    2024年01月23日
    瀏覽(44)
  • 刪除Win11文件管理器左側(cè)的‘主文件夾‘和‘圖庫‘的鏈接.
  • java使用JSch連接服務(wù)器實現(xiàn)命令交互

    java使用JSch連接服務(wù)器實現(xiàn)命令交互

    JSch官網(wǎng) 這里通過jsch遠程連接linux服務(wù)器,并在控制臺實現(xiàn)命令的交互。 創(chuàng)建UserInfo類,實現(xiàn)UserInfo接口(必須)、UIKeyboardInteractive接口(可選)。 將public boolean promptYesNo(String s)方法的返回值更改為true。 啟動前確保linux服務(wù)器22端口開啟。 當main函數(shù)啟動后,就可以將控制臺當

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包