package io;
import org.junit.Test;
import java.io.*;
public class StudyFileByte {
@Test
public void inputStreamTest() {
InputStream is = null;
try {
//创建源
File file = new File("test.txt");
//选择流
is = new FileInputStream(file);
//读取文件
int len = 0;
byte[] dates = new byte[1024];
while ((len = is.read(dates)) != -1) {
String str = new String(dates, 0, len);
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//释放资源
try {
if (null != is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void outputStreamTest() {
OutputStream os = null;
try {
//创建源
File file = new File("test2.txt");
//选择流,第二个参数当为true时表示在文件中数据末尾添加数据,为false时覆盖文件中的数据进行添加
os = new FileOutputStream(file, false);
//写入文件
String str = "Hello world";
byte[] dates = str.getBytes();
os.write(dates, 0, dates.length);
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != os) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void copyTest() {
copyFile("test.txt", "test2.txt");
}
public void copyFile(String souFile, String tarFile) {
InputStream is = null;
OutputStream os = null;
try {
File file1 = new File(souFile);
File file2 = new File(tarFile);
is = new FileInputStream(file1);
os = new FileOutputStream(file2);
int len = -1;
byte[] date = new byte[1024];
while ((len = is.read(date)) != -1) {
os.write(date, 0, len);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != os) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (null != is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test
public void copyDirTest() {
StudyFileByte s = new StudyFileByte();
s.copy("D:\Code\IDEAWorkspace\ProjectMaven\SXTTest\testDir1", "D:\Code\IDEAWorkspace\ProjectMaven\SXTTest\testDir2");
}
public void copy(String oneFile, String twoFile) {
File file1 = new File(oneFile);
File file2 = new File(twoFile);
copyDir(file1, file2);
}
public void copyDir(File file1, File file2) {
if (file1.isFile()) {
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(file1);
os = new FileOutputStream(file2);
int len = -1;
byte[] date = new byte[1024];
while ((len = is.read(date)) != -1) {
os.write(date, 0, len);
}
os.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (null != os) {
os.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if (null != is) {
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
if (file1.isDirectory()) {
file2.mkdir();
File[] list = file1.listFiles();
for (File f : list) {
copyDir(f, new File(file2, f.getName()));
}
}
}
}