文件和目录的操作
IO流 文件 InputStream OutputStream IOStream IO流、ImageIO流 操作图像文件、Stream 流技术(新技术1.8)
stream 流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出(读取写入)。
![](https://img-blog.csdnimg.cn/img_convert/b0a9c5f0e207dc9d471bbb648d1fc6ac.png)
流是一组有顺序的、有起点、和终点的字节集合,是对数据传输的总称或者抽象。即数据在俩设备间的传输称为流,流的本质是数据传输,根据传输特性将流抽象为各种类,方便更直观的进行数据操作。
![](https://img-blog.csdnimg.cn/img_convert/a7411df1e1ac2008999bc5c69e157287.png)
File
工具类构造方法
new File("d:\test\test.txt"):在目录下建立文件
new File("test.txt"):在当前项目下建立文件
new File("d:\test") :可以使目录也可以是文件
new File("d:\test\","test.dat") :指定目录下,建立指定的文件。
文件操作案例
public static void main(String[] args) throws IOException {
//建立文件,写入内容,删除文件,更名移动,复制,读取文件
//建立文件
File file = new File("io");
if (file.isFile() && file.exists()){
file.delete();
} else {
file.createNewFile();
}
//写入文件,并写入内容 文件输出流和读取文件 jdk 17/11
try (var file1 = new FileOutputStream("io.dat",true)) {
file1.write("hello中文".getBytes("utf-8"));
} catch (FileNotFoundException e){
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
//读取文件(文件只能是文本文件ASCII文件)
String file = "F:\\Javase\\Javase\\day15\\src\\com\\lou\\ExceptionDemo.java";
var f = new FileReader(file);
while (f.ready()) {
System.out.println((char) f.read());
}
//写入文件,并写入内容 文件输出流和读取文件 jdk 1.8
File file1 = new File("io.text");
FileOutputStream fileOutputStream = new FileOutputStream(file1); //创建输出流
byte by[] = "你好".getBytes();
fileOutputStream.write(by);
fileOutputStream.close();
FileInputStream inputStream = new FileInputStream(file1); //创建输入流
byte[] bytes = new byte[1024];
int length = inputStream.read(bytes);
System.out.println("文件中的信息是:"+ new String(bytes,0,length)); //将字节转化为字符串输出
inputStream.close();
}
BufferedReader与BufferedWriter类
public static void main(String[] args) throws Exception{
String[] content = {"好久不见","最近好吗","常联系"};
File file = new File("F:\\word.text");
FileWriter fileWriter = new FileWriter(file);
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
for(int i = 0; i < content.length; i++){
bufferedWriter.write(content[i]);
bufferedWriter.newLine();
}
bufferedWriter.close();
fileWriter.close();
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
int i = 1;
String temp = null;
while ((temp = bufferedReader.readLine()) != null){
System.out.println("第"+i+"行"+temp);
i++;
}
fileReader.close();
bufferedReader.close();
}
数据输入/输出流
public static void main(String[] args) throws Exception{
File file = new File("F:\\word1.text");
FileOutputStream fos = new FileOutputStream(file);
DataOutputStream dos = new DataOutputStream(fos);
dos.writeUTF("java");
dos.writeInt(1);
dos.writeDouble(19.9);
dos.writeBoolean(true);
fos.close();
dos.close();
FileInputStream fis = new FileInputStream(file);
DataInputStream dis = new DataInputStream(fis);
System.out.println(dis.readUTF());
System.out.println(dis.readInt());
System.out.println(dis.readDouble());
System.out.println(dis.readBoolean());
fis.close();
dis.close();
}