java基础——IO流
- 其他
- 2025-09-06 17:45:02

目录
1. 文件与常见文件操作
1.1 文件概念
1.2 常见文件操作
2. Java IO 流原理及分类
2.1 原理
2.2 分类
3. 基本流类介绍
3.1 FileInputStream
3.2 FileOutputStream
3.3 FileReader
编辑
3.4 FileWriter
编辑
4. 节点流和处理流
4.1 节点流
4.2 处理流(包装流)
4.3 节点流和处理流的区别和联系
5. 打印流
5.1 PrintStream 和 PrintWriter
6. Properties 类
1. 文件与常见文件操作 1.1 文件概念
在计算机中,文件是存储在存储设备(如硬盘、U 盘等)上的数据集合,可以是文本文件(如 .txt、.java)、二进制文件(如 .jpg、.mp3)等。大家经常使用的word文档,txt文件、excel文件...都是文件。
文件在程序中是以流的形式操作的
1.2 常见文件操作创建文件对象相关构造器和方法
new File(String pathname) //根据路径构建一个File对象 new File(File parent,String child)//根据父目录文件+子路径构建 new File(String parent,String child)//根据父目录+子路径构建文件创建、获取文件的信息、删除
import java.io.File; import java.io.IOException; public class FileExample { public static void main(String[] args) { // 创建一个 File 对象,指向一个文件 File file = new File("test.txt"); try { // 创建新文件 if (file.createNewFile()) { System.out.println("文件创建成功"); } else { System.out.println("文件已存在"); } // 获取文件信息 System.out.println("文件名称: " + file.getName()); System.out.println("文件路径: " + file.getAbsolutePath()); System.out.println("文件大小: " + file.length() + " 字节"); // 删除文件 if (file.delete()) { System.out.println("文件删除成功"); } else { System.out.println("文件删除失败"); } } catch (IOException e) { e.printStackTrace(); } } } 2. Java IO 流原理及分类 2.1 原理Java IO 流是一种用于处理输入输出的机制,它通过流的方式将数据从一个源(如文件、网络连接等)传输到另一个目标(如另一个文件、控制台等)。可以把流想象成一个管道,数据在管道中流动。
2.2 分类 按数据流向分: 输入流:用于从数据源读取数据到程序中。输出流:用于将程序中的数据写入到目标位置。 按处理数据的单位分: 字节流:以字节(8 位)为单位处理数据,适合处理二进制数据。字符流:以字符(16 位)为单位处理数据,适合处理文本数据。 3. 基本流类介绍 3.1 FileInputStreamFileInputStream 是字节输入流,用于从文件中读取字节数据。
import java.io.FileInputStream; import java.io.IOException; public class FileInputStreamExample { public static void main(String[] args) { try (FileInputStream fis = new FileInputStream("test.txt")) { int data; while ((data = fis.read()) != -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } } } 3.2 FileOutputStreamFileOutputStream 是字节输出流,用于将字节数据写入到文件中。
import java.io.FileOutputStream; import java.io.IOException; public class FileOutputStreamExample { public static void main(String[] args) { String content = "Hello, Java IO!"; try (FileOutputStream fos = new FileOutputStream("test.txt")) { byte[] bytes = content.getBytes(); fos.write(bytes); System.out.println("数据写入成功"); } catch (IOException e) { e.printStackTrace(); } } } 3.3 FileReaderFileReader 是字符输入流,用于从文件中读取字符数据。
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Filereader { public static void main(String[] args) throws IOException { String filePath = "d://news1.txt"; String fileOut = "d://news2.txt"; FileReader fileReader = new FileReader(filePath); FileWriter fileWriter = new FileWriter(fileOut); int readLen = 0; char[] buf = new char[8]; while((readLen = fileReader.read(buf)) != -1){ fileWriter.write(buf,0,readLen); } fileWriter.close(); fileReader.close(); } } 3.4 FileWriterFileWriter 是字符输出流,用于将字符数据写入到文件中。
import org.junit.jupiter.api.Test; import java.io.FileOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; public class Fileoutputstream { @Test public void WriteFile(){ String filePath = "d://news2.txt"; FileOutputStream fileOutputStream = null; try { fileOutputStream = new FileOutputStream(filePath); String str = "hello韩顺平"; fileOutputStream.write(str.getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { e.printStackTrace(); }finally { try { fileOutputStream.close();//文件流关闭 } catch (IOException e) { e.printStackTrace(); } } } } 4. 节点流和处理流 4.1 节点流节点流是直接与数据源或目标相连的流,如 FileInputStream、FileOutputStream、FileReader、FileWriter 等,它们可以直接从文件、内存等数据源读取或写入数据。
4.2 处理流(包装流)处理流是对节点流进行包装的流,它可以增强节点流的功能,如提供缓冲、转换等功能。例如 BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter 等。
分类字节处理流字节输出流字符输入流字符输出流抽象基类InputStreamOutputStreamReaderWriter访问文件FileInputStreamFileOutputStreamFileReaderFileWriter访问数组ByteArrayInputStreamByteArrayOutputStreamCharArrayReaderCharArrayWriter访问管道PipedInputStreamPipedOutputStreamPipedReaderPipedWriter访问字符串StringReaderStringWriter缓冲流BufferedInputStreamBufferedOutputStreamBufferedReaderBufferedWriter转换流InputStreamReaderOutputStreamWriter对象流ObjectInputStreamObjectOutputStream抽象基类FilterInputStreamFilterOutputStreamFilterReaderFilterWriter打印流PrintStreamPrintWriter推回输入流PushbackInputStreamPushbackReader特殊流DataInputStreamDataOutputStream 4.3 节点流和处理流的区别和联系 节点流是底层流/低级流, 直接和数据源相接处理流包装节点流, 既可以消除不同节点流之间的实现差异, 也可以提供更方便的方法来完成输入输出处理流对节点流进行包装,使用了修饰器设计模式, 不会直接与数据源相连示例:使用 BufferedInputStream 和 BufferedOutputStream 复制文件
import java.io.*; public class BufferedStreamExample { public static void main(String[] args) { try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("input.txt")); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("output.txt"))) { byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = bis.read(buffer)) != -1) { bos.write(buffer, 0, bytesRead); } System.out.println("文件复制成功"); } catch (IOException e) { e.printStackTrace(); } } } 5. 打印流 5.1 PrintStream 和 PrintWriter打印流提供了方便的打印方法,如 print()、println() 等。PrintStream 是字节打印流,PrintWriter 是字符打印流。
示例:使用 PrintWriter 写入数据到文件
import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; public class PrintWriterExample { public static void main(String[] args) { try (PrintWriter pw = new PrintWriter(new FileWriter("test.txt"))) { pw.println("Hello, PrintWriter!"); pw.print("This is a test."); System.out.println("数据写入成功"); } catch (IOException e) { e.printStackTrace(); } } } 6. Properties 类Properties 类是 Hashtable 的子类,用于处理属性文件,属性文件通常以 .properties 为扩展名,文件内容以键值对的形式存储。
示例:读取和写入属性文件
import java.io.*; import java.util.Properties; public class PropertiesExample { public static void main(String[] args) { Properties properties = new Properties(); // 写入属性文件 try (FileOutputStream fos = new FileOutputStream("config.properties")) { properties.setProperty("username", "admin"); properties.setProperty("password", "123456"); properties.store(fos, "Configuration"); System.out.println("属性文件写入成功"); } catch (IOException e) { e.printStackTrace(); } // 读取属性文件 try (FileInputStream fis = new FileInputStream("config.properties")) { properties.load(fis); String username = properties.getProperty("username"); String password = properties.getProperty("password"); System.out.println("Username: " + username); System.out.println("Password: " + password); } catch (IOException e) { e.printStackTrace(); } } }通过以上内容,你可以对 Java IO 流有一个较为全面的了解,包括文件操作、流的原理和分类、基本流类的使用、节点流和处理流、打印流以及 Properties 类的应用。
java基础——IO流由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“java基础——IO流”
下一篇
Django快速入门