import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import static org.springframework.util.FileCopyUtils.BUFFER_SIZE;
public class CopyFilesWithIO {
public static void main(String[] args) throws IOException {
String inputFile="/Users/xxxx/Downloads/migrateGit.sh";
String inputFile2="/Users/xxx/Downloads/22.png";
String outputFile="/Users/xxx/Downloads/backup.sh";
readAndWriteOne(inputFile,outputFile);
checkIsPngFile(inputFile2);
readAndWriteTwo(inputFile,outputFile);
readAndWriteNIO(inputFile,outputFile);
}
/**
* And the following program runs faster because it reads the whole input file into
* an array of bytes and then write the whole array of bytes to the output file
*/
public static void readAndWriteOne(String inputFile,String outputFile) throws IOException{
try {
InputStream inputStream=new FileInputStream(inputFile);
OutputStream outputStream=new FileOutputStream(outputFile);
int byteRead;
while((byteRead=inputStream.read())!=-1){
outputStream.write(byteRead);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
/**
* And the following program runs faster because it reads the whole input
* file into an array of bytes and then write the whole array of bytes to the output file
*/
public static void readAndWriteTwo(String inputFile,String outputFile) throws IOException{
try {
InputStream inputStream=new FileInputStream(inputFile);
OutputStream outputStream=new FileOutputStream(outputFile);
long fileSize=new File(inputFile).length();
byte[] allBytes=new byte[(int) fileSize];
inputStream.read(allBytes);
outputStream.write(allBytes);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void readAndWriteThree(String inputFile,String outputFile) throws IOException{
/* InputStream inputStream=new BufferedInputStream(new FileInputStream(inputFile));
OutputStream outputStream=new BufferedOutputStream(new FileOutputStream(outputFile));
*/
InputStream inputStream=new BufferedInputStream(new FileInputStream(inputFile),BUFFER_SIZE);
OutputStream outputStream=new BufferedOutputStream(new FileOutputStream(outputFile),BUFFER_SIZE);
byte[] readerByte=new byte[BUFFER_SIZE];
while (inputStream.read(readerByte)!=-1){
outputStream.write(readerByte);
}
}
/**
* The following program reads the first 8 bytes of a file to identify if it is a PNG image format or not
*/
public static void checkIsPngFile(String inputFile) throws IOException{
int[] pngSignature = {137, 80, 78, 71, 13, 10, 26, 10};
boolean isPng = true;
try {
InputStream inputStream = new FileInputStream(inputFile);
int[] headerByte = new int[8];
for (int i = 0; i < 8; i++) {
headerByte[i] = inputStream.read();
if (headerByte[i] != pngSignature[i]) {
isPng = false;
break;
}
}
System.out.println("is inputFile PNG:"+isPng);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void readAndWriteNIO(String inputFile,String outputFile) {
try {
byte[] readAllBytes =Files.readAllBytes(Paths.get(inputFile));
Files.write(Paths.get(outputFile),readAllBytes);
} catch (IOException e) {
e.printStackTrace();
}
}
}
java 文件读写 IO/NIO
最新推荐文章于 2022-09-19 11:40:21 发布