前言
一、硬盘
二、文件
2022-05-08
1.文件数据=管理数据+内容数据
2.文件路径
路径存在不代表文件一定存在
3.小结
三、java.io.File类
1.File
public class Main1 {
public static void main(String[] args) {
{
File file = new File("D:\\课程\\2022-05-08-Java19-22班-IO\\陈沛鑫.txt");
System.out.println(file);
// 对象存在
// 文件并不存在
}
{
// 父结点,一般都是目录
File parent = new File("D:\\课程\\2022-05-08-Java19-22班-IO");
File file = new File(parent, "陈沛鑫.txt");
System.out.println(file);
}
{
// 父结点,一般都是目录
File file = new File("D:\\课程\\2022-05-08-Java19-22班-IO", "陈沛鑫.txt");
System.out.println(file);
}
}
}
2.File类下的常见方法
3.小结及练习
四、文件读取内容
2022-05-09
// 1. 实在搞不定,就先写绝对路径
// 2. 结合运行时配置中的 working directory + 相对路径,能否得到正确的绝对路径
try (InputStream is = new FileInputStream("C:\\\hello.txt")) {
byte[] b = new byte[20];
int n = is.read(b); // 返回值:本次接到多少字节的数据
System.out.println(n); // n
System.out.println(Arrays.toString(b));
n = is.read(); // 下一个字节的数据
System.out.println(n); // 108
}
五、练习
public class File {
public static void main(String[] args) throws IOException {
try(InputStream is = new FileInputStream("C:\\world1.txt")) {
try(Scanner scanner = new Scanner(is,"UTF-8")){
//输出
try(OutputStream os = new FileOutputStream("C:\\world2.txt")) {
try(Writer writer = new OutputStreamWriter(os,"UTF-8")){
try(PrintWriter printWriter = new PrintWriter(writer)){
while(scanner.hasNextLine()){
String line = scanner.nextLine();
String replace = line.replace("你好","wohao ");
printWriter.println(replace);
}
printWriter.flush();
}
}
}
}
}
}
}
public class CopyFile {
public static void main(String[] args) throws IOException {
// 源文件:src.png
// 目标文件:dest.png
try (InputStream is = new FileInputStream("dest.png")) {
try (OutputStream os = new FileOutputStream("dest2.png")) {
byte[] buf = new byte[1024];
while (true) {
int n = is.read(buf);
if (n == -1) {
break;
}
for (int i = 0; i < n; i++) {
buf[i] -= 1;
}
os.write(buf, 0, n);
}
os.flush();
}
}
}
}
import java.io.File;
import java.io.IOException;
public class CopyDirectory {
static String source = "D:\\课程\\2022-05-08-Java19-22班-线程总结";
static String dest = "D:\\课程\\2022-05-09-Java19班-IO\\目标";
public static void main(String[] args) throws IOException {
File srcFile = new File(source);
if (!srcFile.isDirectory()) {
System.out.println("源不是目录");
return;
}
File destFile = new File(dest);
if (destFile.exists()) {
System.out.println("目标路径已经存在");
return;
}
traversal(srcFile, destFile);
}
private static void traversal(File dir, File destFile) throws IOException {
File[] files = dir.listFiles();
if (files == null) {
return;
}
for (File file : files) {
if (file.isDirectory()) {
String path1 = file.getCanonicalPath();
String relative = path1.substring(source.length());
String path2 = dest + relative;
File file2 = new File(path2);
file2.mkdirs();
traversal(file, destFile);
} else if (file.isFile()) {
}
}
}
}