日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > windows >内容正文

windows

java swt 保存文件夹_采用SWT实现系统文件夹的树形结构显示

發(fā)布時(shí)間:2025/3/12 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java swt 保存文件夹_采用SWT实现系统文件夹的树形结构显示 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

/**

* 使用SWT實(shí)現(xiàn)的系統(tǒng)文件夾目錄的顯示,并讀取文件夾目錄下文件的大小(格式化顯示)

* 實(shí)現(xiàn)選擇文件夾、打印文件夾名、文件夾的絕對路徑

* 顯示選準(zhǔn)的文件所在的路徑,不顯示隱藏文件路徑

*/

package test;

import java.io.File;

import java.text.NumberFormat;

import org.eclipse.swt.layout.FillLayout;

import org.eclipse.swt.graphics.Image;

import org.eclipse.swt.graphics.Point;

import org.eclipse.swt.widgets.Event;

import org.eclipse.swt.widgets.Listener;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Tree;

import org.eclipse.swt.widgets.TreeItem;

import org.eclipse.swt.SWT;

public class Treetest {

//類似資源管理器的樹,其中包含鼠標(biāo)雙擊事件

public static void main(String[] args) {

final Display display = new Display();

final Shell shell = new Shell(display);

shell.setText("系統(tǒng)文件夾目錄的Tree顯示");

shell.setLayout(new FillLayout(SWT.VERTICAL));

final Tree tree = new Tree(shell, SWT.BORDER);

TreeItem computer = new TreeItem(tree, SWT.NONE);

computer.setText("我的電腦");

Image computericon = new Image(shell.getDisplay(),

"icons//mycomputer.png");// 創(chuàng)建圖像

computer.setImage(computericon);

//返回可獲得的文件根目錄,即本地文件系統(tǒng)結(jié)構(gòu)的最頂層(如Windows平臺(tái)上的盤符)

File[] roots = File.listRoots();

for (int i = 0; i < roots.length; i++) {

//??? ??? ??? ??? TreeItem root = new TreeItem(tree, 0);

TreeItem root = new TreeItem(computer, 0);

root.setText(roots[i].toString());

root.setData(roots[i]);//保存當(dāng)前節(jié)點(diǎn)數(shù)據(jù)

Image cdicon = new Image(shell.getDisplay(), "icons//系統(tǒng)磁盤.png");// 創(chuàng)建磁盤圖像

root.setImage(cdicon);

new TreeItem(root, 0);//把當(dāng)前節(jié)點(diǎn)作為目錄節(jié)點(diǎn)

}

tree.addListener(SWT.Expand, new Listener() {

public void handleEvent(final Event event) {

final TreeItem root = (TreeItem) event.item;

TreeItem[] items = root.getItems();

for (int i = 0; i < items.length; i++) {

if (items[i].getData() != null)

return;

items[i].dispose();

}

File file = (File) root.getData();

File[] files = file.listFiles();//返回File對象(文件夾與文件)的數(shù)組

//采用文件夾目錄過濾器來判斷當(dāng)前路徑是否為文件夾,返回File對象(文件夾)的數(shù)組

//File[] files = file.listFiles(new DirFilter());

// 列出該目錄中的文件名與文件夾名,返回一個(gè)文件名數(shù)組

// String[] filespath=file.list();

// for (int i = 0; i < filespath.length; i++) {

// System.out.println("文件為: " + filespath[i]);

// }

if (files == null)

return;

for (int i = 0; i < files.length; i++) {

//不顯示隱藏文件的路徑

//if(files[i].isHidden()==false){//判斷當(dāng)前路徑的文件是否為隱藏文件

if ((files[i].isHidden() == false)

&& (files[i].isFile() == false)) {//判斷當(dāng)前路徑是否為隱藏文件與文件夾

TreeItem item = new TreeItem(root, 0);

item.setText(files[i].getName());

//葉子節(jié)點(diǎn)對應(yīng)的數(shù)值為相應(yīng)文件夾的File對象

item.setData(files[i]);

Image foldericon = new Image(shell.getDisplay(),

"icons//文件夾圖標(biāo).png");// 創(chuàng)建文件夾圖像

item.setImage(foldericon);

//當(dāng)前為文件目錄而不是文件的時(shí)候,添加新項(xiàng)目,以便只是顯示文件夾(包括空文件夾),而不顯示文件夾下的文件

if (files[i].isDirectory()) {

new TreeItem(item, 0);

}

}

}

}

});

//??? ??? 鼠標(biāo)單擊選擇樹的葉子節(jié)點(diǎn)事件

final Treetest tr = new Treetest();

tree.addListener(SWT.MouseDown, new Listener() {

public void handleEvent(Event event) {

Point point = new Point(event.x, event.y);

TreeItem item = tree.getItem(point);

if ((item != null) && (item.getData() != null)) {

System.out.println("您選中的文件夾名是:" + item.getText());

File s = (File) item.getData();

// 得到本地的缺省格式

NumberFormat nf = NumberFormat.getInstance();

double fsizebyte = (double) tr.getDirectorySize(s);

System.out.println("您選中的文件夾大小是:" + nf.format(fsizebyte)

+ "字節(jié)");

double fsizemb = (double) tr.getDirectorySize(s) / 1024;

System.out.println("您選中的文件夾大小是:" + nf.format(fsizemb)

+ "MB");

System.out.println("您選中的文件夾路徑是:" + item.getData());

}

}

});

//根據(jù)Tree的大小更改shell的大小

Point size = tree.computeSize(300, SWT.DEFAULT);

int width = Math.max(300, size.x);

int height = Math.max(300, size.y);

shell.setSize(shell.computeSize(width, height));

shell.open();

while (!shell.isDisposed()) {

if (!display.readAndDispatch())

display.sleep();

}

display.dispose();

}

/**

* 計(jì)算文件夾目錄下文件的整體大小(單位為:字節(jié))

*/

public long getDirectorySize(File dir) {

long retSize = 0;//文件夾目錄下文件的大小

if ((dir == null) || !dir.isDirectory()) {

return retSize;

}

File[] entries = dir.listFiles();

int count = entries.length;

for (int i = 0; i < count; i++) {

if (entries[i].isDirectory()) {

retSize += getDirectorySize(entries[i]);

} else {

retSize += entries[i].length();

}

}

return retSize;

}

總結(jié)

以上是生活随笔為你收集整理的java swt 保存文件夹_采用SWT实现系统文件夹的树形结构显示的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。