一、题目描述
所有异常,全部在调用方法内捕获处理
将以下IOTest类的全部方法实现
public class IOTest {
public static void main(String[] args) {
String fileName = “C:/example/from.txt”;
System.out.println("----- 创建文件 ------");
createFile(fileName);
System.out.println("----- 将字符串写入文件 -------");
// \r\n在txt文本中换行
String str =
"白日依山尽\r\n" +
"黄河入海流\r\n" +
"欲穷千里目\r\n" +
"更上一层楼\r\n";
writeToFile(str, fileName);
System.out.println("--------- 基于基本IO流实现文件的复制 ----------");
String toFile = "C:/example/to.txt";
copyByIO(fileName, toFile);
System.out.println("--------- 基于NIO实现文件的复制 ----------");
String toFile2 = "C:/example/nio/to.txt";
copyByIO(fileName, toFile2);
System.out.println("---------- 删除指定文件 -------------");
deleteFile(toFile);
System.out.println("---------- 遍历指定目录文件 -------------");
String dir = "C:/example";
walkDirectories(dir);
}
/**
* 基于指定文件名称创建目录及文件
* 如果文件已经存在,则忽略
*
* @param fileName
*/
private static void createFile(String fileName) {
}
/**
* 提示:文件以字节操作,因此可以
* 字符串,转字节数组,直接基于Files写入文件
*
* @param fileName
* @param content
*/
private static void writeToFile(String fileName, String content) {
}
/**
* 基于基本IO,以及字节数组缓冲区,复制文件
* 打印显示循环读写循环次数
*
* @param sourceFile
* @param targetFile
*/
private static void copyByIO(String sourceFile, String targetFile) {
}
/**
* 基于NIO,实现文件的复制
*
* @param sourceFile
* @param targetFile
*/
private static void copyByNIO(String sourceFile, String targetFile) {
}
/**
* 删除文件
*
* @param fileName
*/
private static void deleteFile(String fileName) {
}
/**
* 遍历打印指定目录下全部目录/文件名称
*
* @param dir
*/
private static void walkDirectories(String dir) {
}
}
二、代码实现
题目一内容:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class IOTest {
public static void main(String[] args) {
String fileName = "C:/example/from.txt";
System.out.println("----- 创建文件 ------");
createFile(fileName);
System.out.println("----- 将字符串写入文件 -------");
// \r\n在txt文本中换行
String str =
"白日依山尽\r\n" +
"黄河入海流\r\n" +
"欲穷千里目\r\n" +
"更上一层楼\r\n";
writeToFile( fileName,str);
System.out.println("--------- 基于基本IO流实现文件的复制 ----------");
String toFile = "C:/example/to.txt";
copyByIO(fileName, toFile);
System.out.println("--------- 基于NIO实现文件的复制 ----------");
String toFile2 = "C:/example/nio/to.txt";
copyByNIO(fileName, toFile2);
System.out.println("---------- 删除指定文件 -------------");
deleteFile(toFile);
System.out.println("---------- 遍历指定目录文件 -------------");
String dir = "C:/example";
walkDirectories(dir);
}
/**
* 基于指定文件名称创建目录及文件
* 如果文件已经存在,则忽略
*
* @param fileName
*/
private static void createFile(String fileName) {
Path path=Paths.get(fileName);
try {
if(!Files.exists(path)) {
Files.createDirectories(path.getParent());
Files.createFile(path);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 提示:文件以字节操作,因此可以
* 字符串,转字节数组,直接基于Files写入文件
*
* @param fileName
* @param content
*/
private static void writeToFile(String fileName, String content) {
Writer writer=null;
try {
writer =new FileWriter(fileName);
writer.write(content);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
if(writer!=null)
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 基于基本IO,以及字节数组缓冲区,复制文件
* 打印显示循环读写循环次数
*
* @param sourceFile
* @param targetFile
*/
private static void copyByIO(String sourceFile, String targetFile) {
createFile(targetFile);
Writer writer=null;
Reader reader=null;
try {
reader=new FileReader(sourceFile);
writer=new FileWriter(targetFile);
char[] cbuf=new char[1024];
reader.read(cbuf);
writer.write(cbuf);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
if(writer!=null)
try {
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(reader!=null)
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* 基于NIO,实现文件的复制
*
* @param sourceFile
* @param targetFile
*/
private static void copyByNIO(String sourceFile, String targetFile) {
createFile(targetFile);
Path sourcePath=Paths.get(sourceFile);
Path taggetPath=Paths.get(targetFile);
try {
Files.copy(sourcePath, taggetPath,StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 删除文件
*
* @param fileName
*/
private static void deleteFile(String fileName) {
Path path=Paths.get(fileName);
try {
Files.delete(path);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 遍历打印指定目录下全部目录/文件名称
*
* @param dir
*/
private static void walkDirectories(String dir) {
Path path=Paths.get(dir);
try {
Files.walk(path).forEach(s->System.out.println(s));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}