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

下載本文檔

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

文檔簡(jiǎn)介

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

2、lt;p>  任課教師: 成績(jī)?cè)u(píng)定:</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)的訪問(wèn)和操作。實(shí)驗(yàn)要求用高級(jí)語(yǔ)言編寫(xiě)和調(diào)試一

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

4、gt;  算法設(shè)計(jì)</b></p><p>  、定義主面板MainFrame,布局好各個(gè)控件,并初始化</p><p><b>  /*</b></p><p>  * 往node節(jié)點(diǎn)下添加一個(gè)子節(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ū),會(huì)出現(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>  * 對(duì)樹(shù)的節(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;  * 對(duì)路徑路徑進(jìn)行連接;(已經(jīng)獲得了所有的整個(gè)路徑,需要量轉(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>  * 樹(shù)展開(kāi)及收縮監(jiān)聽(tīng);</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>  // 對(duì)節(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("所展開(kāi)節(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("請(qǐng)輸入要添加的文件(夾)名:");</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("請(qǐng)輸入修改后的文件名:");</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án)符;</p><p>  public String[] ListDisks() {</p><p>  File roots[] = File.listRoots();// 根盤(pán)符;</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 + "個(gè)文件");</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("這是一個(gè)文件");</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)建出錯(cuò)!");</p><p><b>  }</b></p><p>  } catch (Exception e) {</p><p>  System.out.println("出錯(cuò)信息:" + 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("文件(夾)刪除操作出錯(cuò)!");</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)行與測(cè)試<

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論