java 如何得到文件的系统图标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 如何得到文件的系统图标相关的知识,希望对你有一定的参考价值。

任何一种文件类型,得到本地系统(windows ,linux)针对该文件的图标,Icon或者image都可以
我以前看到过有人解决过类似问题,一行代码就能搞定,
根本用不到ImageIO,ImageReader之类的东西

java可使用FileSystemView和ShellFolder类获取文件的小图标和大图标,以下是详细代码:

import java.awt.FlowLayout;
import java.io.File;
import java.io.FileNotFoundException;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.filechooser.FileSystemView;

public class GetFileIcon 
/**
 * @param args
 */
    public static void main( String[] args )
    
        String    filePath    = "D:/sheet1.xlsx";
        File    f        = new File( filePath );
        JFrame    frm        = new JFrame();
        frm.setSize( 300, 200 );
        frm.setLocationRelativeTo( null );
        frm.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frm.setVisible( true );
        frm.setLayout( new FlowLayout( 10, 10, FlowLayout.LEADING ) );

        JLabel sl = new JLabel( "小图标" );
        frm.add( sl );
        JLabel bl = new JLabel( "大图标" );
        frm.add( bl );

        sl.setIcon( getSmallIcon( f ) );
        bl.setIcon( getBigIcon( f ) );
    


/**
 * 获取小图标
 * @param f
 * @return
 */
    private static Icon getSmallIcon( File f )
    
        if ( f != null && f.exists() )
        
            FileSystemView fsv = FileSystemView.getFileSystemView();
            return(fsv.getSystemIcon( f ) );
        
        return(null);
    


/**
 * 获取大图标
 * @param f
 * @return
 */
    private static Icon getBigIcon( File f )
    
        if ( f != null && f.exists() )
        
            try 
                sun.awt.shell.ShellFolder sf = sun.awt.shell.ShellFolder.getShellFolder( f );
                return(new ImageIcon( sf.getIcon( true ) ) );
             catch ( FileNotFoundException e ) 
/* TODO Auto-generated catch block */
                e.printStackTrace();
            
        
        return(null);
    
参考技术A FileSystemView fsv=new JFileChooser().getFileSystemView();
Icon icon=fsv.getSystemIcon(new File("123.jpg"));
系统中表示jpg格式文件图标就在icon变量中了。本回答被提问者和网友采纳
参考技术B 楼主你好
很高兴回答你的问题
有些手机,安装java软件时必须使用jad文件,比如三星的
回答完毕
谢谢

idea中java文件图标如何转换?

在idea中正常的java文件图标中心是C,现在我又一个文件图标中心变成了J,其他文件引用这个文件中的方法也出现异常,怎么变成正常的,以C为中心的图标的正常文件呢?

把这个标识为J的代码贴出来一下,大家好分析。
标识为C是表示这是定义为class的文件,比如定义为interface的会标识为I。
如果把里面的代码全部注释掉后,idea就无法识别这是个class还是interface的JAVA文件,只根据文件后缀知道是个java文件就显示为J了。
如果有帮助到你,请点击采纳。
参考技术A 样式的问题,删除.setting文件

以上是关于java 如何得到文件的系统图标的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JFileChooser 中显示文件的默认系统图标?

如何在java中获取linux文件夹和文件的图标和名称? [复制]

安卓怎么隐藏app图标

为啥我在使用 SHFileInfo 时得到错误的 SpecialFolder 图标?

如何在 linux 系统的可执行文件上设置图标(或 .ico 文件)?

win7系统的IE图标ICO原文件放在哪里?