文件:
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
// 构造方法:
// File(String pathname) - 通过参数指定的路径名来构造对象
File file = new File("D:\\a.txt");
//
// 成员方法:
// - public String getName() :获取名称
System.out.println(file.getName());
// - public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
String[] list = file.list();
System.out.println(list);
// - public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
File[] files = file.listFiles();
System.out.println(files);
- public boolean isDirectory() :此File表示的是否为目录。
System.out.println(file.isDirectory());
// - public boolean isFile() :此File表示的是否为文件。
System.out.println(file.isFile());
}
}
练习
public class Demo1 {
public static void main(String[] args) {
//判断指定⽬录下的⽂件和⽬录,如果是⽂件则打印{⽂件名称},如果是⽬录则打印[⽬录名称],
//打印指定⽬录中以pdf结尾的⽂件名称
//先创建一个对象然后关联文件
File file = new File("D:\\Program Files\\feiq\\Recv Files");
//将文件夹里面的内容用数组表示
File[] files = file.listFiles();
//遍历数组并加判断条件
for (File file1 : files) {
if(file1.isDirectory()){
System.out.println("["+file1.getName()+"]");
}else if(file1.getName().endsWith(".pdf")){
System.out.println(file1.getName());
}else {
System.out.println("{"+file1.getName()+"}");
}
}
}
}
IO流
I
/
O
就是
Input
/
Output
的简写,也就是输⼊
/
输出的含义。站在程序的⻆度,读就是输⼊,写就是输
出
字节流和字符流:
字节流:读写的基本单位是按字节进⾏,各种类型的⽂件都可以读写
字符流:读写的基本单位是按字符
进⾏,只能读写⽂本⽂件
输⼊流和输出流:
输⼊流:将⽂件中的数据内容读取出来输⼊到程序中,也就是读⽂件。
输出流:将程序中的数据内容输出到⽂件中,也就是写⽂件
FileOutputStreamDemo:
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo {
public static void main(String[] args) {
FileOutputStream fos = null;
try {
//FileOutputStream(String name) - 根据参数指定的⽂件名来构造对象。
fos = new FileOutputStream("a.txt");
//void write(int b) - 将指定字节写⼊此⽂件输出流。
fos.write(97);
//void write(byte[] b, int off, int len)
// 将指定byte数组中从偏移量off开始的len个字节写⼊此⽂件输出流。
byte[] bytes = {'H', 'E', 'L', 'L', 'O'};
fos.write(bytes, 0, 5);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (fos != null) {
//void close() - 关闭此⽂件输出流并释放与此流有关的所有系统资源。
try {
fos.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
}
FileInputStreamDemo:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
// int read(byte[] b, int off, int len)
// - 从此输⼊流中将最多len个字节的数据读⼊⼀个byte数组中。
// int read(byte[] b)
// - 从此输⼊流中将最多b.length个字节的数据读⼊⼀个byte数组中。返回读取字节的个数
public class FileInputStreamDemo {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("a.txt");
//int read() - 从此输⼊流中读取⼀个数据字节。 -1是EOF。
int read = fis.read();
System.out.println(read);//97
System.out.println("========");
int len = 0;
while((len=fis.read())!=-1){
System.out.println((char)len);
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
练习
//将a中的内容读取出来复制到b上
public class IOTest {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("b.txt");
FileInputStream fis = new FileInputStream("a.txt");
int date = 0;
int num = fis.available();
byte bytes[] = new byte[num];
while((date = fis.read(bytes))!=-1){
fos.write(bytes);
}
System.out.println("拷贝完成");
fis.close();
fos.close();
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
BufferWriterAndBufferReadDemo
import java.io.*;
public class BufferWriterAndBufferReadDemo {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(
new InputStreamReader(new FileInputStream("a.txt"))
);
BufferedWriter bw =new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("a.txt")));
bw.write("欲买桂花同载酒");
bw.newLine();
System.out.println("加入成功");
bw.close();
String s = br.readLine();
System.out.println(s);
br.close();
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
FileWriterAndFileReadDemo
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterAndFileReadDemo {
public static void main(String[] args) {
try {
FileWriter fw = new FileWriter("a.txt");
FileReader fr = new FileReader("a.txt");
fw.write("仰天大笑出门去");
fw.append('!');
System.out.println("添加完成");
fw.close();
int date = 0;
while((date = fr.read())!=-1){
System.out.print((char)date);
}
fr.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
练习
不断地提示⽤户输⼊要发送的内容,若发送的内容是
"再见"
则聊天结束, 否则将⽤户输⼊的内容写⼊到⽂件
b.txt
中。
import java.io.*;
public class BufferedTest {
public static void main(String[] args) {
BufferedWriter bw = null;
BufferedReader br = null;
try {
//先关联文件
bw = new BufferedWriter(
new OutputStreamWriter(new FileOutputStream("b.txt")));
br = new BufferedReader(
new InputStreamReader(System.in));
//一直提醒以及没有关键语句停止要循环
while (true){
System.out.println("请输入发送的消息");
String s = br.readLine();
//加上限制条件
if ("再见".equalsIgnoreCase(s)){
break;
}else {
bw.write(s);
bw.newLine();
}
}
} catch (FileNotFoundException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}finally {
try {
bw.close();
br.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}