最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
java中文件拷貝剪切的方式有哪些

這篇文章主要講解了“java中文件拷貝剪切的方式有哪些”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“java中文件拷貝剪切的方式有哪些”吧!

成都創(chuàng)新互聯(lián)是一家專業(yè)提供埇橋區(qū)企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、H5頁面制作、小程序制作等業(yè)務(wù)。10年已為埇橋區(qū)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

一、文件拷貝

傳統(tǒng)IO中的文件copy的方法,使用輸入輸出流,實(shí)際上就是重新創(chuàng)建并寫入一個(gè)文件。如果目標(biāo)文件已經(jīng)存在,就覆蓋掉它,重新創(chuàng)建一個(gè)文件并寫入數(shù)據(jù)。這種方式不夠友好,覆蓋掉原有文件沒有給出任何提示,有可能導(dǎo)致原有數(shù)據(jù)的丟失。

@Test
void testCopyFile1() throws IOException {
  File fromFile = new File("D:\\data\\test\\newFile.txt");
  File toFile = new File("D:\\data\\test2\\copyedFile.txt");

  try(InputStream inStream = new FileInputStream(fromFile);
      OutputStream outStream = new FileOutputStream(toFile);) {

    byte[] buffer = new byte[1024];

    int length;
    while ((length = inStream.read(buffer)) > 0) {
      outStream.write(buffer, 0, length);
      outStream.flush();
    }

  }
}

Java NIO中文件copy的方法,使用方式簡單。當(dāng)目標(biāo)文件已經(jīng)存在的時(shí)候會(huì)拋出FileAlreadyExistsException ,當(dāng)源文件不存在的時(shí)候拋出NoSuchFileException,針對(duì)不同的異常場景給出不同的Exception,更有利于我們寫出健壯性更好的程序。

@Test
void testCopyFile2() throws IOException {
  Path fromFile = Paths.get("D:\\data\\test\\newFile.txt");
  Path toFile = Paths.get("D:\\data\\test2\\copyedFile.txt");

  Files.copy(fromFile, toFile);
}

如果在目標(biāo)文件已經(jīng)存在的情況下,你不想拋出FileAlreadyExistsException ,而是去覆蓋它,也可以靈活的選擇使用下面的選項(xiàng)

  • StandardCopyOption.REPLACE_EXISTING 來忽略文件已經(jīng)存在的異常,如果存在就去覆蓋掉它

//如果目標(biāo)文件存在就替換它
Files.copy(fromFile, toFile, StandardCopyOption.REPLACE_EXISTING);
  • StandardCopyOption.COPY_ATTRIBUTES copy文件的屬性,最近修改時(shí)間,最近訪問時(shí)間等信息,不僅copy文件的內(nèi)容,連文件附帶的屬性一并復(fù)制

CopyOption[] options = { StandardCopyOption.REPLACE_EXISTING,
      StandardCopyOption.COPY_ATTRIBUTES //copy文件的屬性,最近修改時(shí)間,最近訪問時(shí)間等
};
Files.copy(fromFile, toFile, options);

二、文件重命名

NIO中可以使用Files.move方法在同一個(gè)文件夾內(nèi)移動(dòng)文件,并更換名字。當(dāng)目標(biāo)文件已經(jīng)存在的時(shí)候,同樣會(huì)有FileAlreadyExistsException,也同樣可以使用StandardCopyOption去處理該異常。

@Test
void testRenameFile() throws IOException {
  Path source = Paths.get("D:\\data\\test\\newFile.txt");
  Path target = Paths.get("D:\\data\\test\\renameFile.txt");

  //REPLACE_EXISTING文件存在就替換它
  Files.move(source, target,StandardCopyOption.REPLACE_EXISTING);
}

下文中的實(shí)現(xiàn)方法和上面代碼的效果是一樣的,resolveSibling作用是將source文件的父路徑與參數(shù)文件名合并為一個(gè)新的文件路徑。

resolve系列函數(shù)在windows和linux等各種系統(tǒng)處理路徑分隔符號(hào)、路徑與文件名合并等,比自己手寫代碼去處理不同操作系統(tǒng)的路徑分隔符號(hào)、路徑與文件名合并有更好的操作系統(tǒng)兼容性。

@Test
void testRenameFile2() throws IOException {
  Path source = Paths.get("D:\\data\\test\\newFile.txt");

  //這種寫法就更加簡單,兼容性更好
  Files.move(source, source.resolveSibling("renameFile.txt"));
}

傳統(tǒng)IO中使用File類的renameTo方法重命名,失敗了就返回false,沒有任何異常拋出。你不會(huì)知道你失敗的原因是什么,是因?yàn)樵次募淮嬖趯?dǎo)致失敗?還是因?yàn)槟繕?biāo)文件已經(jīng)存在導(dǎo)致失敗?所以這種方法筆者不建議使用。

@Test
void testRenameFile3() throws IOException {

  File source = new File("D:\\data\\test\\newFile.txt");
  boolean succeeded = source.renameTo(new File("D:\\data\\test\\renameFile.txt"));
  System.out.println(succeeded);  //失敗了false,沒有異常
}

三、文件剪切

文件剪切實(shí)際上仍然是Files.move,如果move的目標(biāo)文件夾不存在或源文件不存在,都會(huì)拋出NoSuchFileException

@Test
void testMoveFile() throws IOException {

  Path fromFile = Paths.get("D:\\data\\test\\newFile.txt"); //文件
  Path anotherDir = Paths.get("D:\\data\\test\\anotherDir"); //目標(biāo)文件夾

  Files.createDirectories(anotherDir);
  Files.move(fromFile, anotherDir.resolve(fromFile.getFileName()),
          StandardCopyOption.REPLACE_EXISTING);
}

resolve函數(shù)是解析anotherDir路徑與參數(shù)文件名進(jìn)行合并為一個(gè)新的文件路徑。

感謝各位的閱讀,以上就是“java中文件拷貝剪切的方式有哪些”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)java中文件拷貝剪切的方式有哪些這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!


網(wǎng)站標(biāo)題:java中文件拷貝剪切的方式有哪些
當(dāng)前路徑:http://fisionsoft.com.cn/article/gsgics.html