真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java操作文件與磁盤的方法是什么

這篇文章主要介紹“Java操作文件與磁盤的方法是什么”,在日常操作中,相信很多人在Java操作文件與磁盤的方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java操作文件與磁盤的方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),三水網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:三水等地區(qū)。三水做網(wǎng)站價(jià)格咨詢:18980820575

1 如何獲得某一個(gè)目錄下的文件列表?

  File MyDir = new File("C:/windows/.");

  String[] FileNames = MyDir.list();

2 如何實(shí)現(xiàn)一個(gè)打開文件或者是存儲(chǔ)文件對話框?

  AWT:  FileDialog類 + FilenameFilter類

  swing:  JFileChooser類 + FileFilter類

  其中,基于Swing的解決方案功能更加強(qiáng)大,界面也更加美觀。

3 利用FileReader/FileOutputStream拷貝中文文件出錯(cuò)?

  利用如下代碼片斷拷貝中文文件不會(huì)出錯(cuò):

  int c;

  while ((c = MyFileReader.read()) != -1)

  MyFileWriter.write(c);

  利用如下代碼片斷拷貝中文文件會(huì)導(dǎo)致文件內(nèi)容錯(cuò)誤:

  int c;

  while ((c = MyFileReader.read()) != -1)

  MyFileOutputStream.write(c);

  造成這個(gè)問題的原因是:FileReader.read()返回一個(gè)int,其取值范圍是

  0 到65535,通常來說是兩個(gè)字節(jié)的;FileWriter.write(int c)向文件寫

  入一個(gè)int,通常來說也是兩個(gè)字節(jié)的,如果某個(gè)字符的高位字節(jié)為空,那

  么其高位字節(jié)將被舍棄;FileOutputStream.write(int b)雖然接受一個(gè)

  int作為參數(shù),實(shí)際上只向文件寫入一個(gè)字節(jié),如果傳遞過來的參數(shù)是一個(gè)

  雙字節(jié)的漢字,其高位字節(jié)將被舍棄,造成文件內(nèi)容錯(cuò)誤。

  建議:永遠(yuǎn)只使用InputStream/OutputStream進(jìn)行IO操作。

  利用如下代碼片斷拷貝中文文件不會(huì)出錯(cuò):

  int c;

  while ((c = MyFileInputStream.read()) != -1)

  MyFileOutputStream.write(c);

4 如何顯示和存儲(chǔ)拉丁語言中的特殊字符

  使用統(tǒng)一碼Unicode可以顯示和存儲(chǔ)拉丁語言中的特殊字符。具體應(yīng)用范例

  如下:

  MyJTextArea.append("u00E1");

  MyJTextArea.append("u00E2");

  MyJTextArea.append("u00E3");

  MyJTextArea.append("u00E4");

  MyJTextArea.append("u00E5");

  MyFileOutputStream.write(MyJTextArea.getText().getBytes("UTF-8"));

  MyFileOutputStream.close();

  同樣,在讀取文件的時(shí)候也需要將讀到的內(nèi)容轉(zhuǎn)換成統(tǒng)一碼。

  byte[] b = new byte[MyFile.length()];

  FileInputStream in = new FileInputStream(MyFile);

  in.read(b);

  MyJTextArea.append(new String(b, "UTF-8"));

5 如何利用文件進(jìn)行數(shù)據(jù)存取

  對于一般的科學(xué)計(jì)算應(yīng)用程序,DataInputStream和DataOutputStream類通

  常是最好的選擇。這兩個(gè)類提供了存取各種數(shù)據(jù)的方法。下面的范例演示了

  構(gòu)造DataInputStream和DataOutputStream的方法:

  MyDataInputStream  = new DataInputStream(

  new FileInputStream(MyInputFile));

  MyDataOutputStream = new DataOutputStream(

  new FileOutputStream(MyOutputFile));

  利用objectInputStream和ObjectOutputStream同樣可以進(jìn)行數(shù)據(jù)存取,需

  要注意的是這樣做增加了硬盤的開銷,因?yàn)檫M(jìn)行對象序列化過程添加了一

  些額外的信息。在利用ObjectInputStream和ObjectOutputStream進(jìn)行通訊

  的時(shí)候,雖然數(shù)據(jù)發(fā)收過程得到了大大簡化,但是對帶寬的要求也大大的

  提高了。

6 文件操作的基本原則是什么?

  a. 避免多次訪問磁盤,例如一次讀出n個(gè)字節(jié)就比每次讀出1個(gè)字節(jié)的訪問

  效率要高很多。

  b. 避免多次訪問操作系統(tǒng)。

  c. 避免多次調(diào)用文件存取方法。

  d. 避免將字節(jié)和字符混淆處理,在Java語言中字節(jié)與字符的概念是不一樣

  的,在涉及到雙字節(jié)字符的問題上更是容易出錯(cuò)。

7 如何獲得可用的硬盤空間?

  目前尚未發(fā)現(xiàn)有任何干凈利落的純Java方法能夠解決這個(gè)問題。通常的解

  決方案是直接訪問操作系統(tǒng)獲得這些信息。有一個(gè)被稱為JConfig的類庫提

  供了一些方法可以獲得磁盤和文件信息,但是可以肯定這個(gè)類庫使用了JNI

  方法。

  如果你使用的是暈倒死系列操作系統(tǒng),那么下面的方法也許能夠獲得正確

  的結(jié)果。我之所以說也許,是因?yàn)槲以诙鄠€(gè)暈倒死平臺(tái)上作過實(shí)際測試,

  在英文版的暈倒死上基本上都能夠得到正確的結(jié)果,在中文版的暈倒死上

  基本上都不能夠獲得正確的結(jié)果。

  String osname = System.getProperty("os.name");

  String command = "";

  if (osname.indexOf("NT") > -1)

  command = "c:winntSystem32cmd.exe";

  else if (osname.indexOf("Windows") > -1)

  command = "c:windowscommand.com";

  Process p = Runtime.getRuntime().exec(

  command + " /c dir > c:dir.txt");

  p.waitFor();

  然后你需要做的是對得到的dir.txt文件進(jìn)行分析。

  如果你使用的是unix/Linux操作系統(tǒng),你可以使用類似的方法來獲得相關(guān)

  信息。建議使用的命令是df -k > dir.txt。

8 我能夠用Java來格式化我的硬盤或者是軟盤么?

  關(guān)于這個(gè)問題,想來在不久的將來仍然是不會(huì)有純Java的解決方案了。如

  果你一定要在你的Java應(yīng)用程序里面格式化你的C盤的話,下面的這個(gè)方法

  也許會(huì)有所幫助。當(dāng)然,在你使用這個(gè)方法之前,請仔細(xì)備份好女朋友給你

  的情書或者是記下和下一個(gè)網(wǎng)友約會(huì)的日期。

  建立一個(gè)稱為FormatDrive.bat的文件,該文件必須放在當(dāng)前目錄或者是系

  統(tǒng)路徑下,文件的內(nèi)容如下:

  rundll32.exe shell32.dll, SHFormatDrive

  格式化硬盤的方法可以這樣寫:

  public void FormatDrive()

  {

  try

  {

  Process p = Runtime.getRuntime().exec("FormatDrive.bat");

  p.waitfor();

  } catch (Exception e)

  {

  System.out.println(e);

  }

  }

9 怎么知道我究竟有幾個(gè)可用的存儲(chǔ)設(shè)備?

  在UNIX/Linux下你通常沒有必要關(guān)心這個(gè)問題,只要記住那個(gè)斜杠就可以了。

  在暈倒死下硬盤可以有多個(gè)邏輯分區(qū),可應(yīng)用下面的方法找出來:

  public void ListDisks()

  {

  File[] roots = File.listRoots();

  for (int i=0; i

  {

  System.out.println(roots[i]);

  }

  }

到此,關(guān)于“Java操作文件與磁盤的方法是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!


本文題目:Java操作文件與磁盤的方法是什么
分享URL:http://weahome.cn/article/jcjhsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部