操作系統(tǒng)課程設(shè)計-文件管理實(shí)驗(yàn)報告_第1頁
已閱讀1頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p>  操作系統(tǒng)課程實(shí)驗(yàn)報告</p><p>  2013~2014年度 第1學(xué)期</p><p><b>  院系:</b></p><p><b>  學(xué)號: </b></p><p><b>  姓名: </b></p>&

2、lt;p>  任課教師: 成績評定:</p><p>  實(shí)驗(yàn)一題目:文件管理</p><p>  完成日期:年 月 日</p><p><b>  實(shí)驗(yàn)?zāi)康?lt;/b></p><p>  了解文件管理的功能和任務(wù),理解文件系統(tǒng)組成和特點(diǎn),熟悉文件系統(tǒng)的訪問和操作。實(shí)驗(yàn)要求用高級語言編寫和調(diào)試一

3、個簡單的模擬文件管理程序。加深理解有關(guān)盤塊的分配與回收、目錄管理等的具體實(shí)施策略。 </p><p><b>  2.、實(shí)驗(yàn)內(nèi)容</b></p><p>  模擬一個資源管理器進(jìn)行文件操作,包括建立和刪除目錄、建立和刪除文件等基本文件操作。建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu)(如:位示圖等),模擬盤塊管理。可以參照圖6界面進(jìn)行設(shè)計。</p><p><b&

4、gt;  算法設(shè)計</b></p><p>  、定義主面板MainFrame,布局好各個控件,并初始化</p><p><b>  /*</b></p><p>  * 往node節(jié)點(diǎn)下添加一個子節(jié)點(diǎn)obj;</p><p><b>  */</b></p><p&

5、gt;  public void addChild(Object obj, DefaultMutableTreeNode node) {</p><p>  if (obj != null && node != null) {</p><p>  DefaultMutableTreeNode temp = new DefaultMutableTreeNode(obj);&l

6、t;/p><p>  if (node.getAllowsChildren())</p><p>  node.add(temp);</p><p>  if (!((String) obj).equals("A:\\") && ((String) obj).length() <= 3)// 防止讀取A軟驅(qū),會出現(xiàn)異常;用于初始

7、用的;</p><p>  addChildren(cmd.listAll((String) obj), temp);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*</b></p><p&g

8、t;  * 在node節(jié)點(diǎn)下添加數(shù)組children;</p><p><b>  */</b></p><p>  public void addChildren(String[] children, DefaultMutableTreeNode node) {</p><p>  if (children != null &&

9、; node != null) {</p><p>  for (int i = 0; i < children.length; i++) {</p><p>  addChild(children[i], node);</p><p><b>  }</b></p><p><b>  }</b&

10、gt;</p><p><b>  }</b></p><p><b>  /*</b></p><p>  * 對樹的節(jié)點(diǎn)進(jìn)行預(yù)提取;</p><p><b>  */</b></p><p>  public void addPrefetchChil

11、dren(String path, DefaultMutableTreeNode node) {</p><p>  addChildren(cmd.listDirectory(path), node);</p><p><b>  }</b></p><p><b>  /*</b></p><p&g

12、t;  * 對路徑路徑進(jìn)行連接;(已經(jīng)獲得了所有的整個路徑,需要量轉(zhuǎn)化)</p><p><b>  */</b></p><p>  public String toFilePath(String str) {</p><p>  // 先去掉頭尾的[];</p><p>  String pa = str.subst

13、ring(1, str.length() - 1);</p><p>  String[] temp = pa.split(", ");</p><p>  String path = "";</p><p>  for (int i = 1; i < temp.length; i++) {</p><

14、;p>  if (!path.endsWith("\\") && !path.equals(""))// 不為空是為去根節(jié)點(diǎn);</p><p>  path += "\\";</p><p>  path += temp[i];</p><p><b>  }</b&g

15、t;</p><p>  return path;</p><p><b>  }</b></p><p>  public String toPFilePath(String str) {</p><p>  // 先去掉頭尾的[];</p><p>  String pa = str.subs

16、tring(1, str.length() - 1);</p><p>  String[] temp = pa.split(", ");</p><p>  String path = "";</p><p>  for (int i = 1; i < temp.length - 1; i++) {</p>

17、<p>  if (!path.endsWith("\\") && !path.equals(""))// 不為空是為去根節(jié)點(diǎn);</p><p>  path += "\\";</p><p>  path += temp[i];</p><p><b>  }<

18、;/b></p><p>  return path;</p><p><b>  }</b></p><p>  public class ExpandListener implements TreeWillExpandListener {</p><p><b>  /*</b></

19、p><p>  * 樹展開及收縮監(jiān)聽;</p><p><b>  */</b></p><p>  private MainFrame mainFrame = null;</p><p>  public ExpandListener(MainFrame mainFrame) {</p><p> 

20、 this.mainFrame = mainFrame;</p><p><b>  }</b></p><p>  public void treeWillExpand(TreeExpansionEvent event) {</p><p>  // 對節(jié)點(diǎn)的路徑進(jìn)行轉(zhuǎn)化</p><p>  String path =

21、 toFilePath(event.getPath().toString());</p><p>  TreePath treePath = event.getPath();</p><p>  DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath</p><p>  .getLastPath

22、Component();</p><p>  // System.out.println("所展開節(jié)點(diǎn)的路徑:" + path);</p><p>  // System.out.println(treePath);</p><p>  if (node.getDepth() < 2) {</p><p>  Enu

23、meration children = node.children();</p><p>  String filePath = "";</p><p>  while (children.hasMoreElements()) {</p><p>  DefaultMutableTreeNode temp = (DefaultMutableTre

24、eNode) children</p><p>  .nextElement();</p><p>  filePath = "";</p><p>  filePath = path;</p><p>  if (!filePath.endsWith("\\"))</p><p&g

25、t;  filePath += "\\";</p><p>  filePath += temp.toString();</p><p>  // System.out.println("temp=" +filePath);</p><p>  mainFrame.addPrefetchChildren(filePath, t

26、emp);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  、添加功能“添加文件(夾)addframe()”、“修改文件(夾)mvframe()”</p><p>

27、;  public void addframe() {</p><p>  JFrame addFrame = new JFrame();</p><p>  JLabel jlbl = new JLabel("請輸入要添加的文件(夾)名:");</p><p>  addrs = new JLabel("");</p&

28、gt;<p>  addrs.setBounds(180, 10, 100, 25);</p><p>  jlbl.setBounds(10, 10, 170, 25);</p><p>  addfile = new JTextField();</p><p>  addfile.setBounds(10, 40, 260, 25);</p&

29、gt;<p>  btnaddf = new JButton("添加文件");</p><p>  btnaddd = new JButton("添加文件夾");</p><p>  btnaddf.setBounds(20, 80, 100, 25);</p><p>  btnaddd.setBounds(1

30、60, 80, 100, 25);</p><p>  btnaddf.addActionListener(this);</p><p>  btnaddd.addActionListener(this);</p><p>  addFrame.add(jlbl);</p><p>  addFrame.add(addrs);</p&g

31、t;<p>  addFrame.add(addfile);</p><p>  addFrame.add(btnaddf);</p><p>  addFrame.add(btnaddd);</p><p>  addFrame.setBounds(400, 350, 300, 150);</p><p>  addFrame

32、.setTitle("添加文件(夾)");</p><p>  addFrame.setLayout(null);</p><p>  addFrame.setVisible(true);</p><p><b>  }</b></p><p>  public void mvframe() {<

33、;/p><p>  JFrame mvFrame = new JFrame();</p><p>  JLabel jlbl = new JLabel("請輸入修改后的文件名:");</p><p>  mvrs = new JLabel("");</p><p>  mvrs.setBounds(160,

34、 10, 140, 25);</p><p>  jlbl.setBounds(10, 10, 170, 25);</p><p>  mvfile = new JTextField();</p><p>  mvfile.setBounds(10, 40, 260, 25);</p><p>  btnmvf = new JButton(&

35、quot;修改文件名");</p><p>  btnmvd = new JButton(" 修改文件夾名");</p><p>  btnmvf.setBounds(10, 80, 120, 25);</p><p>  btnmvd.setBounds(150, 80, 120, 25);</p><p> 

36、 btnmvf.addActionListener(this);</p><p>  btnmvd.addActionListener(this);</p><p>  mvFrame.add(jlbl);</p><p>  mvFrame.add(mvrs);</p><p>  mvFrame.add(mvfile);</p>

37、;<p>  mvFrame.add(btnmvf);</p><p>  mvFrame.add(btnmvd);</p><p>  mvFrame.setBounds(400, 350, 300, 150);</p><p>  mvFrame.setTitle("修改文件(夾)名");</p><p>

38、;  mvFrame.setLayout(null);</p><p>  mvFrame.setVisible(true);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  顯示文件</b></p>&

39、lt;p>  * 顯示系統(tǒng)中的所有盤符;</p><p>  public String[] ListDisks() {</p><p>  File roots[] = File.listRoots();// 根盤符;</p><p>  String disks[] = new String[roots.length];</p><p&

40、gt;  for (int i = 0; i < roots.length; i++) {</p><p>  disks[i] = roots[i].toString();</p><p><b>  }</b></p><p>  return disks;</p><p><b>  }</b

41、></p><p>  * 獲得路徑path下的文件;</p><p>  public String[] listAll(String path) {</p><p><b>  try {</b></p><p>  File f = new File(path);</p><p>  

42、String[] fileName;</p><p>  String tmp = null;</p><p>  mainFrame.fileshow.setText(null);</p><p>  mainFrame.filestyle.setText(null);</p><p>  if (f.isDirectory()) {<

43、;/p><p>  fileName = f.list();</p><p>  // System.out.println("共有" + fileName.length + "個文件");</p><p>  for (int i = 0; i < fileName.length; i++) {</p>&l

44、t;p>  mainFrame.fileshow.append(fileName[i] + '\n');</p><p>  tmp = path + '\\' + fileName[i];</p><p>  // System.out.println(tmp);</p><p>  if (listDirectory(tmp

45、) != null) {</p><p>  mainFrame.filestyle.append("文件夾\n");</p><p><b>  } else {</b></p><p>  mainFrame.filestyle.append("文件\n");</p><p>

46、<b>  }</b></p><p><b>  }</b></p><p>  return fileName;</p><p>  } else if (f.isFile()) {</p><p>  System.out.println("這是一個文件");</p&

47、gt;<p>  return null;</p><p><b>  } else {</b></p><p>  // System.out.println(path);</p><p>  return null;</p><p><b>  }</b></p>&

48、lt;p>  } catch (Exception e) {</p><p>  return null;</p><p><b>  }</b></p><p><b>  }</b></p><p>  public String[] listDirectory(String path)

49、{</p><p>  File f = new File(path);</p><p>  String[] fileName;</p><p>  if (f.isDirectory()) {</p><p>  fileName = f.list();</p><p>  return fileName;<

50、/p><p><b>  } else {</b></p><p>  // System.out.println(path + "是文件");</p><p>  return null;</p><p><b>  }</b></p><p><b&

51、gt;  }</b></p><p>  * 進(jìn)行md操作;md <目錄名> 功能: 創(chuàng)建新目錄</p><p>  public void md(String directory) {</p><p>  if (!mainFrame.currentPath.equals("")) {</p><p&

52、gt;  String temp = mainFrame.currentPath + "\\" + directory;</p><p>  File newFile = new File(temp);</p><p>  if (!newFile.exists()) {</p><p><b>  try {</b><

53、;/p><p>  if (newFile.isDirectory() == false) {</p><p>  newFile.mkdirs();</p><p>  System.out.println("文件夾創(chuàng)建成功!");</p><p><b>  } else {</b></p>

54、;<p>  System.out.println("文件夾創(chuàng)建出錯!");</p><p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  System.out.println("出錯信息:" + e.getMessage()

55、);</p><p><b>  }</b></p><p><b>  } else {</b></p><p>  System.out.println("文件夾已經(jīng)存在");</p><p><b>  }</b></p><p&g

56、t;<b>  }</b></p><p><b>  }</b></p><p>  * 進(jìn)行rd操作;rd <目錄名> 功能: 刪除目錄;</p><p>  public void del() {</p><p>  String temp = mainFrame.currentP

57、ath;</p><p>  File file = new File(temp);</p><p>  if (file.exists()) {</p><p>  if (file.delete()) {</p><p>  mainFrame.fileshow.setText("文件(夾)刪除成功!");</p

58、><p><b>  } else {</b></p><p>  mainFrame.fileshow.setText("文件(夾)刪除操作出錯!");</p><p><b>  }</b></p><p><b>  } else {</b></p&

59、gt;<p>  mainFrame.fileshow.setText("文件(夾)不存在");</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  /*</b></p><p>  *

60、進(jìn)行edit操作:edit <文件名> 功能: 新建文件</p><p><b>  */</b></p><p>  public void edit(String file) {</p><p>  if (!mainFrame.currentPath.equals("")) {</p><

61、;p>  String temp = mainFrame.currentPath + "\\" + file;</p><p>  File newFile = new File(temp);</p><p>  if (newFile.exists()) {</p><p>  mainFrame.addrs.setText("

62、文件已經(jīng)存在!");</p><p>  System.out.println("文件已經(jīng)存在!");</p><p><b>  } else {</b></p><p><b>  try {</b></p><p>  newFile.createNewFile(

63、);</p><p>  mainFrame.addrs.setText("文件創(chuàng)建成功!");</p><p>  System.out.println("文件創(chuàng)建成功!");</p><p>  } catch (Exception e) {</p><p>  System.out.println

64、("文件創(chuàng)建失敗:" + e.getMessage());</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

65、;<p>  public void mvf(String file){</p><p>  if (!mainFrame.PPath.equals("")) {</p><p>  String temp = mainFrame.PPath + "\\" + file;</p><p>  File newFi

66、le = new File(mainFrame.currentPath);</p><p>  if (newFile.exists()) {</p><p>  if(newFile.renameTo(new File(temp))==true){</p><p>  mainFrame.mvrs.setText("修改文件名成功!");<

67、;/p><p><b>  }else{</b></p><p>  mainFrame.mvrs.setText("存在同名文件!");</p><p><b>  }</b></p><p><b>  }</b></p><p>&

68、lt;b>  }</b></p><p><b>  }</b></p><p>  public void mvd(String dir){</p><p>  if (!mainFrame.PPath.equals("")) {</p><p>  String temp = m

69、ainFrame.PPath + "\\" + dir;</p><p>  File newFile = new File(mainFrame.currentPath);</p><p>  if (newFile.exists()) {</p><p>  if(newFile.renameTo(new File(temp))==true){

70、</p><p>  mainFrame.mvrs.setText("修改文件夾名成功!");</p><p><b>  }else{</b></p><p>  mainFrame.mvrs.setText("存在同名文件夾!");</p><p><b>  }&l

71、t;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  運(yùn)行與測試<

72、;/b></p><p><b>  運(yùn)行時,彈出主界面</b></p><p><b>  雙擊文件盤C</b></p><p>  在E盤路徑添加文件夾操作系統(tǒng),再添加文件操作系統(tǒng)</p><p>  如果文件已存在會顯示</p><p><b>  可以

73、更改文件名稱</b></p><p>  刪除文件,不過有個BUG,要文件一層層刪,才可以刪除。</p><p><b>  可以顯示目錄路徑</b></p><p><b>  總結(jié)與心得</b></p><p>  我們每天都在用文件系統(tǒng),已經(jīng)習(xí)慣了有文件路徑尋找的方便,每次找文件時

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論