java文件資料管理系統器(Java文件管理系統)

本文目錄一覽:

操作系統編寫文件管理系統

為了實現遠程文件管理系統的跨操作系統運行,設計了一套基於 Java Socket 的遠程文件類應用程序介面(API),並在此基礎上實現了一個圖形界面的 Client/Server結構的遠程文件管理系統。這套API在形式上類似於SunJDK本地文件類,開發人員使用這套 API 能方便快速地實現能滿足自身需要的遠程文件管理系統。關鍵詞:Java; socket; JDK; 文件管理系統中圖法分類號: 文獻標識碼: 文章編號:Design and realization of Java based remote file management system JIANGYing ,XIU Gui_hua (Shenyang Institute of Chemical Tecnology , Shenyang 110142, China) Abstract:A set of Java socket based application programming interface API) about the remote file system is designed to realize the(remote file management system’s running on different operating systems, and a client/server structure based remote file managementsystem is realized with graphic interface using that set of API. This set of API is similar to the local file operation classes of the Sun JDK.Using this set of API the programmers can realize a remote file management system satisfying their requirement conveniently and rapidly. Key words:Java; socket; JDK; file management system 1 引 言 現有的遠程文件管理系統主要有以下兩種類型:①基於 FTP 協議的系統;②各操作系統自帶的,只能在相同操作系統之間進行遠程文件管理的系統。 對於第 1 種系統,有安裝、管理複雜等缺點,並且同一種伺服器端或客戶端軟體只能在同一種操作系統上安裝使用;而第 2 種系統只能在相同的操作系統中使用。 Java 語言是一種優秀的跨平台語言,用 Java 語言編寫的程序編譯之後產生的 class 文件能在不同的操作系統上運行。因此,設計了一套在形式上類似於 Java 本地文件類的遠程文件管理 API,並且在這套 API 的基礎上實現了一個基於 C/S結 構的圖形界面遠程文件管理系統,這套系統的伺服器端和客戶端都能在不同的操作系統上運行。基於這套 API,各種類型的用戶都能方便快速地實現出能滿足自身需要的遠程文件管理系統。 2 設計原則和相關技術 2.1 設計原則 系統基於傳統的 Client/Server 兩層結構設計,設計原則如 下:①客戶端和伺服器端都採用純 Java語言編寫,以保證系統的跨平台應用性;②客戶端和伺服器端用 Socket 進行底層通信;伺服器端程序作為監聽程序在需要管理的文件系統所在的主機中運行,監聽來自客戶端,也就是文件系統的管理者的管理操作命令。客戶端和伺服器端用 Socket 保持通信。 2.2 Java Socket 概述 流式 Socket 所完成的通信是一種基於連接的通信,即在通信開始之前先由通信雙方確認身份並建立一條專用的虛擬 連接通道,然後它們通過這條通道傳送數據信息進行通信,當 通 信 結 束 時 再 將 原 先 所 建 立 的 連 接 拆 除 。 Java 語 言 用 Java.Net.Socket 和Java.Net.ServerSocket 類來實現 Socket 通信。下面的代碼片斷表示了一個建立伺服器端監聽程序並與客戶端進行簡單通信的過程: ……//在 8000 埠新建一個監聽服務ServerSocket listener = new ServerSocket(8000); //阻塞,直至捕捉到一個 client 端的請求Socket client = listener.accept(); //得到向客戶端的輸出流OutputStream out = client.getOutputStream(); //得到來源於客戶端的輸入流InputStream in = client.getInputStream(); String strHello =「Hello!」; byte[] hello = strHello.getBytes(); //向客戶端發送消息「Hello!」out.write(hello); ……由上面的程序可見,監聽程序在捕捉到客戶端的連接請求後能得到向客戶端的輸出流(OutputStream 類)和來源於客戶端的輸入流(InputStream 類),調用輸出流和輸入流的相關方法,就能向客戶端發送位元組或者從客戶端接收位元組,這樣就為遠程文件管理系統提供了技術支持。 2.3 Java 文件類概述 Java 語言的文件操作功能十分強大,有豐富的類庫來支 持文件操作,主要有 File 類、FileInputStream 類、FileOutputStream 類、FileSystemView 類、RandomAccessFile 類等。其中, File 類用來管理磁碟文件和目錄,FileInputStream 和 FileOutputStream 類分別管理文件的輸入和輸出,FileSystemView 類主要 實現操作系統級別的文件操作 。這些類使用方便,功能強大,但是只能執行本地文件操 作。下面的代碼顯示了用 File 類和 FileSystemView 類判斷一個驅動器是否為軟盤驅動器的方法: …… FileSystemView fs= FileSystemView.getFileSystemView(); File drive = new File「A:\\」); if(fs.isFloppyDrive(drive)) System.out.println(「A 盤是軟盤驅動器。」); else System.out.println(「A 盤不是軟盤驅動器。」); …… 3 系統的設計 系統由 3 個部分組成:相關的一套 API,供客戶端程序使用;伺服器端程序;客戶端程序。 3.1 相關 API 這套 API 的核心類是 FileSystem 類和 File 類,而 File 類的 實現又依賴於FileSystem類。(1)rg.rmfs.FileSystem 此類對應 Sun JDK 中的 javax.swing.filechooser.FileSystemView 類,並且是它的子類;FileSystem 類表示一個遠程的文件 系統,用在客戶端程序中,通過它提供的靜態方法getFileSystem()可以得到 FileSystem 類的對象: public class FileSystem extends FileSystemView { private Socket socket; //與遠程文件系統的 Socket 連接 private OutputStream out; //輸出到遠程文件系統的輸出流private InputStream in; //來源於遠程文件系統的輸入流 public static synchronized FileSystem getFileSystem(String host,int port){ …… //用指定的主機和埠號來取得與遠程文件系統的連接 socket = new Socket(host,port); out = socket.getOutputStream(); in = socket.getInputStream(); …… } //從一個文件輸入流中讀入位元組 int read(FileInputStream fis,in,byte[] b,int off,int len) { …… String cmd =「READ」+fis.getID()+「END」; out.write(cmd.getBytes[]); in.read(b,off,len); …… } //向文件輸出流輸出位元組 void write(FileOutputStream fos,byte[] b,int off,int len){ … String cmd =「WRITE」+fos.getID()+「END」; out.write(cmd.getBytes[]); out.write(b,off,len); { … { …… (2) org.rmfs.File 此類對應 Sun JDK 中的 Java.io. File 類,用在客戶端程序 中,表示遠程文件系統中的一個文件或者目錄: public class File implements java.io.Serializable,java.lang.Comparable{ private FileSystem fs; //表示此文件所在的遠程文件系統 private String path; //表示此文件在文件系統中的路徑 //得到此文件所在的文件系統public FileSystem getFileSystem() {return fs; } //構造方法 public File(FileSystem fs,String path){ if path == null || fs==null) {…… throw new NullPointerException(); { …… {.…… (3) org.rmfs. FileInputStream 此類對應 Sun JDK 中的 java.io.FileInputStream 類,用來從一個遠程文件中讀取數據 public class FileInputStream extends java.io.InputStream { private FileSystem fs; //對應的文件所在的遠程文件系統對象 private File file; //對應的遠程文件對象//構造方法public FileInputStream(File file){ this.file = file; this.fs = file.getFileSystem(); {…… {…… (4)Java.io.FileOutputStream 此類對應 Sun JDK 中的 Java.io.FileOutputStream 類,用來向一個遠程文件寫數據 public class FileOutputStream extends java.io.OutputStream{ …//與 FileInputStream類似略 //構造方法 public FileOutputStream(File file){ this.file = file; this.fs = file.getFileSystem(); …… { //向輸出流中寫數據 public void write(byte[] b, int off, int len) throws IOExc-eption{ … fs.write(this,b,off,len); { …… {…… (5)org.rmfs. RandomAccessFile 此類對應 SunJDK 中的 java.io.RamdomAccessFile 類,功能也與之相似。由於前面介紹的 4 個類已經能實現遠程文件管理系統的功能,故不再詳細介紹此類。3.2 伺服器端程序 伺服器端程序向客戶機提供遠程文件訪問服務,它實質上是一個在某個埠上進行監聽的程序。FileSystem 類有一個域 socket,實際上就是與伺服器端程序相連的 Socket 對象。伺服器端程序直接與 FileSystem 類進行通信和傳遞數據。當伺服器端程序捕捉到一個連接請求時,就代表有一個客戶端程序正在連接伺服器,這時,伺服器端程序就生成一個線程來處理和客戶端的通信。3.3 客戶端程序 客戶端程序使用上面介紹的 5 個類與遠程文件系統進行通信,一個典型的操作流程是:調用 FileSystem getFileSystem(Stringhost, int port) 方法得到遠程文件系統的對象;調用File(FileSystem fs,String path)方法得到一個遠程文件對象;然後就可以根據得到的文件對象執行相關操作,如可以刪除文件、可以向文件寫數據(需要構造 FileOutputStream 類)、可以從文件中讀取數據(需要構造 FileInputStream 類)等。 客戶端程序使用上面介紹的 5 個類,就可以完全屏蔽具體的 Socket 操作來進行網路通信,大大降低了程序的複雜度,提高了程序的開發效率。4 結 論設計了一套在形式上類似於 Sun 公司的標準本地文件處理類的 API,並在這套 API 的基礎上實現了一個 Client/Server 結構的遠程文件管理系統。由於這套 API 在形式上與 Sun 公司的文件處理類有相似的介面,並且完全屏蔽了底層的 Socket 操作,所以用戶用這套 API能方便、快速地實現符合自身要求的遠程文件管理系統。本文作者創新點:設計了類似於 Sun 公司的標準本地文件處理類的 API,並在這套 API 的基礎上實現了一個 Client/Server 結構的遠程文件管理系統,使用戶能方便、快速地實現符合自身要求的遠程文件管理系統。

用JAVA製作一個文件系統管理器文件目錄瀏覽,創建目錄,移動文件,文件改名,文件刪除等等功能

/**

* 取得當前目錄下文件對象

* @return

*/

public static Iterator getFiles(File currentFile) {

Vector vector = new Vector();

File afile[] = currentFile.listFiles();

for (int i = 0; i afile.length; i++)

if (afile[i].isFile())

vector.add(afile[i]);

return vector.iterator();

}

/**

* 取得當前目錄下的子目錄對象列表

* @return

*/

public static Iterator getAllDirectories(File currentFile) {

Vector vector = new Vector();

File afile[] = currentFile.listFiles();

//vector.add(new File(documentRoot, relativeFile + File.separator + “.”));

try {

vector.add(new File(currentFile.getCanonicalFile() + File.separator + “..”));

for (int i = 0; i afile.length; i++)

if (afile[i].isDirectory())

vector.add(afile[i]);

} catch (IOException e) {

if (log.isErrorEnabled()) log.error(e);

}

return vector.iterator();

}

/**

* 取得當前目錄下的子目錄對象列表

* @return

*/

public static Iterator getDirectories(File currentFile) {

Vector vector = new Vector();

File afile[] = currentFile.listFiles();

for (int i = 0; i afile.length; i++)

if (afile[i].isDirectory())

vector.add(afile[i]);

return vector.iterator();

}

/**

* 將內容寫入文件

* @param file

* @param content

* @throws IOException

*/

public static void writeFile(String file, String content)

throws IOException {

PrintWriter printwriter = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),BIND_ENCODING)));

printwriter.write(content);

printwriter.close();

if (printwriter.checkError())

if (log.isErrorEnabled())

log.error(“Error encountered while writing the file!”);

else

return;

}

代碼太長,分批發.

求JAVA平台的文件管理器,可以查看系統文件夾的,jar格式,謝謝!!!!!

去天網設好機型,再在軟體分類里點系統,進入後再點精品,再自己選擇下載,推薦下載minicommander文件管理器。

java基於xml文件學生信息管理系統

你好,你要的學生信息管理系統。(1) Student類import java.io.Serializable;/** * @author liuxe * @since JDK 1.7.0_79 */public class Student implements Serializable { private int stuId; private String name; private String major; private String sex; private String contactWay; public int getStuId() { return stuId; } public void setStuId(int stuId) { this.stuId = stuId; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getMajor() { return major; } public void setMajor(String major) { this.major = major; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getContactWay() { return contactWay; } public void setContactWay(String contactWay) { this.contactWay = contactWay; }}(2) StuMis類import java.io.*;import java.util.ArrayList;import java.util.List;/** * @author liuxe * @since JDK 1.7.0_79 */public class StuMis { public static List studentList = new ArrayList(); public static boolean add(Student student) { return studentList.add(student); } public static boolean remove(Student student) { return studentList.remove(student); } public static boolean update(Student student) { for (Student dto : studentList) { if (student.getStuId() == dto.getStuId()) { studentList.remove(dto); } } return studentList.add(student); } public static Student queryByStuId(int id) { for (Student dto : studentList) { if (id == dto.getStuId()) { return dto; } } return null; } public static List queryByName(String name) { List returnList = new ArrayList(); for (Student dto : studentList) { if (name.equals(dto.getName())) { returnList.add(dto); } } return returnList; } public static void saveToFile() { try { ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream( new File(“.” + File.separator + “student.dat”))); oo.writeObject(studentList); } catch (Exception ex) { ex.printStackTrace(); } } public static void readFromFile() { try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream( new File(“.” + File.separator + “student.dat”))); studentList = (List) ois.readObject(); } catch (Exception ex) { ex.printStackTrace(); } }}(3)、StuMisTest類:主函數測試學生信息管理系統import java.util.List;/** * @author liuxe * @since JDK 1.7.0_79 */public class StuMisTest { public static void main(String[] args) { Student student = new Student(); student.setStuId(1); student.setName(“AAA”); student.setMajor(“AAAA”); student.setSex(“A”); student.setContactWay(“AA”); Student student2 = new Student(); student2.setStuId(2); student2.setName(“BBB”); student2.setMajor(“BBBB”); student2.setSex(“B”); student2.setContactWay(“BB”); Student student3 = new Student(); student3.setStuId(3); student3.setName(“CCC”); student3.setMajor(“CCCC”); student3.setSex(“C”); student3.setContactWay(“CC”); //A、 增加一個學生記錄 StuMis.add(student); StuMis.add(student2); StuMis.add(student3); //B、 刪除一個學生記錄 StuMis.remove(student2); //C、 修改學生信息 student.setMajor(“DDDD”); StuMis.update(student); //D、 根據學號查找學生 Student studentXX = StuMis.queryByStuId(3); //E、 根據姓名查找學生。。。 List studentOO = StuMis.queryByName(“AAA”); //F、 將集合中所有學生信息存儲到student.dat中。 StuMis.saveToFile(); //G、 再次運行系統時載入student.dat中的學生信息,後支持A~E基本操作。 StuMis.readFromFile(); }}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/241672.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:42
下一篇 2024-12-12 12:42

相關推薦

發表回復

登錄後才能評論