對IO流的操作(檔案大小,拷貝,移動,刪除)

來源:互聯網
上載者:User

標籤:字元流   create   拷貝   工具   null   建立   count   byte   har   

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.SequenceInputStream;

class LjyFileClass {

/*LjyFileClass工具類使用需知:

*
* 1.計算檔案大小:long size = getFileSize(File file)
* file:傳入一個檔案路徑,計算檔案夾中所有的檔案大小,
* 傳回值是一個long類型的位元組數。
*
*
* 2.拷貝檔案夾:getCopyFile(File filePath,File newFilePath)
* filePath:需要拷貝的檔案路徑,
* newFilePath:存放檔案的路徑
* 使用時只需要傳入要拷貝的路徑和一個存放的路徑就可以了。
*
*
* 3.位元組流拷貝圖片,視頻,音頻等檔案:getCopyFileContent(File file,File file2)
* file:要拷貝的檔案路徑
* file2:存放路徑
* 位元組流適用於拷貝圖片,視頻,音頻等一些不需要解碼的檔案,
* 使用時只需要傳入要拷貝的路徑和一個存放的路徑就可以了。
*
*
* 4.字元流拷貝檔案:getFileRead(File file , File file2)
* file:要拷貝的檔案路徑
* file2:存放路徑
* 字元流適用於拷貝一些需要解碼操作的檔案,但是不能實用字元流來拷貝圖片,音頻,
* 視頻等。使用字元流可能會導致檔案丟失。而不能正常開啟。
*
*
* 5.MergeFile(File file , File file2,File file3):合并兩個檔案
* file:需要合并的檔案路徑
* file2:需要合并的檔案路徑
* file3:合并之後的檔案路徑
*
* 該方法可以實現兩個檔案的拼接,並且返回一個新的檔案。
*
*
* 6.MoveFileToNewPath(File file, File file2):把目標檔案移動到指定的路徑下
* file:需要移動的檔案路徑
* file2:接收移動過來的檔案路徑
* 該方法可以把一個檔案夾移動到指定的路徑下,並且刪除原來的檔案。
*
*
* 7.getDeleteFile(File file):刪除整個檔案夾
* file:要刪除的檔案夾路徑
* 該方法可以實現整個檔案夾的刪除工作。
*
*
*
* 方法摘要:
* 1.getFileSize(File file)返迴文件大小
* 2.getCopyFile(File filePath,File newFilePath)拷貝檔案夾
* 3.getCopyFileContent(File file,File file2)位元組流拷貝圖片,視頻,音頻等檔案
* 4.getFileRead(File file , File file2)字元流拷貝檔案
* 5.MergeFile(File file , File file2,File file3)合并兩個檔案
* 6.MoveFileToNewPath(File file, File file2)把目標檔案移動到指定的路徑下
* 7.getDeleteFile(File file)刪除整個檔案夾
*/

//擷取檔案大小,只需傳一個檔案路徑的實參,傳回值是檔案大小(long類型),傳回值只表示檔案的位元組大小。
public long getFileSize(File file){
long fileSize = 0;
File[] files = file.listFiles();

if (file.isFile()) {
  return file.length();
}
if (file != null) {
  for (File file2 : files) {
    fileSize += getFileSize(file2);
  }
}
return fileSize;
}


//把一個檔案夾拷貝到另一個檔案夾裡
public void getCopyFile(File filePath,File newFilePath) throws IOException{
File[] files = filePath.listFiles();
File tempFile = null;
if (!(newFilePath.isDirectory())) {
  newFilePath.mkdir();
}
if (filePath != null) {
  for (File file : files) {
    if (file.isDirectory()) {
      String string = file.getName();
      tempFile = new File(newFilePath+"\\"+string);
      tempFile.mkdir();
      getCopyFile(file, tempFile);

    }else if (file.isFile()) {
      String string = file.getName();
      tempFile = new File(newFilePath+"\\"+string);
      tempFile.createNewFile();
      getCopyFileContent(file,tempFile);
    }
  }
}

}

//拷貝圖片,視頻,音頻等不需解碼的檔案
public void getCopyFileContent(File file,File file2) throws IOException{

FileInputStream inputStream = new FileInputStream(file);
FileOutputStream outputStream = new FileOutputStream(file2);

byte[] b = new byte[1024];
int count = 0;
while ((count = inputStream.read(b)) != -1) {
  outputStream.write(b,0,count);
}
inputStream.close();
outputStream.close();
}

//用字元流來拷貝,當用此方法來拷貝圖片,視頻,音頻等檔案時,這些檔案將不能被開啟。
public void getFileRead(File file , File file2) throws IOException {
FileReader fileReader = new FileReader(file);
FileWriter fileWriter = new FileWriter(file2);
char[] b = new char[1024];
int count = 0;
while ((count = fileReader.read(b)) != -1) {
  fileWriter.write(b,0,count);
}

fileWriter.close();
fileReader.close();
}

//合并檔案
public void MergeFile(File file , File file2, File file3) throws IOException {

FileInputStream fileInputStream = new FileInputStream(file);
FileInputStream fileInputStream2 = new FileInputStream(file2);
FileOutputStream outputStream = new FileOutputStream(file3);
SequenceInputStream inputStream = new SequenceInputStream(fileInputStream, fileInputStream2);

byte[] b = new byte[1024];
while (inputStream.read(b) != -1) {
  outputStream.write(b);
}
outputStream.close();
inputStream.close();
}

//把檔案移動到新的路徑下file:要移動的路徑 file2:接收移動的路徑
public void MoveFileToNewPath(File file, File file2) throws IOException{
File file3 = new File(file2.getPath() + "\\" + file.getName());
//把檔案複製到指定的路徑上
getCopyFile(file, file3);
//清空原來的檔案夾並且刪除
getDeleteFile(file);
}

//遞迴刪除整個檔案夾
public void getDeleteFile(File file){

File[] files = file.listFiles();
if (file != null) {
  for (File file2 : files) {
    if (file2.isDirectory()) {
      getDeleteFile(file2);
    }else {
      file2.delete();
    }
  }
}
file.delete();
}


//剪下檔案
public void ShearFile() {

}

}

public class demo {

/**
* 1.建立檔案
* 2.建立檔案夾
* 3.尋找以結尾
* 4.判斷是否是一個檔案
* 5.判斷是否是一個檔案夾
* 6.
*
*/
public static void main(String[] args) throws IOException {
LjyFileClass ljyFileClass = new LjyFileClass();

//File file = new File("C:\\Users\\PC-LUO\\Desktop\\建立檔案夾\\1.jpg");
//File file2 = new File("C:\\Users\\PC-LUO\\Desktop\\建立檔案夾\\建立檔案夾\\1.jpg");
//
//ljyFileClass.getCopyFileContent(file, file2);

File file3 = new File("C:\\1111");
file3.mkdir();
}

}

對IO流的操作(檔案大小,拷貝,移動,刪除)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.