Java学习之路——IO、特殊文件
- 手机
- 2025-08-12 16:36:01

文章目录 1. I/O1.1 常用API1.2 I/O流1.2.1 字节流1.2.2 try-catch-finally和try-with-resource1.2.3 字符流1.2.4 其他的一些流 2. I/O框架3. 特殊文件3.1. Properties3.2 XML 1. I/O 1.1 常用API // 1. 创建文件对象 File file = new File("E:\\ComputerScience\\java\\IO\\test.txt"); // 2. 是否存在路径 System.out.println(file.exists()); // 3. 判断是否是文件 System.out.println(file.isFile()); // 4. 判断是否是文件夹 System.out.println(file.isDirectory()); // 5. 获取文件的名称(包括后缀) System.out.println(file.getName()); // 6. 获取文件大小 System.out.println(file.length()); // 7. 获取文件最后修改时间 System.out.println(file.lastModified()); // 8. 获取创建文件对象时,使用的路径 System.out.println(file.getPath()); // 9. 获取绝对路径 System.out.println(file.getAbsolutePath()); File[] files = file.listFiles(); for (File file : files) { System.out.println(file); } 1.2 I/O流 I称为输入流:负责把数据读到内存中去O称为输出流:负责写数据出去
按流中数据的最小单位:
字节流:适合操作所有类型的文件 字节输入流:InputStream字节输出流:OutputStream 字符流:只适合操作纯文本文件 字符输入流:Reader字符输出流:Writer 1.2.1 字节流FileInputStream 把磁盘文件中的数据以字节的形式读入到内存中去。
FileOutputStream
1.2.2 try-catch-finally和try-with-resourcefinally是用于在程序执行完后进行资源释放的操作,即便出现了异常,也会执行finally的代码(专业级做法)
IDEA的快捷键是ctrl + alt + t
try { test4(); } catch (Exception e) { e.printStackTrace(); } finally { System.out.println("执行结束"); }try-with-resource是JDK7后有的,更加简洁,不需要写finally这个臃肿的代码块。即不需要我们去写一些close代码了,只需要在try的时候放到小括号里面。
static void test4() throws Exception { // 注意,括号里面只能放置资源对象 try ( OutputStream os = new FileOutputStream("test2.txt", true); ) { byte[] bytes = "我爱你中国".getBytes(); os.write(97); os.write(bytes); // 换行 os.write("\r\n".getBytes()); } catch (IOException e) { throw new RuntimeException(e); } } 1.2.3 字符流字节流适合复制文件,但不适合读写文本文件;而字符流更适合读写文本文件内容。
字符流读文件,会把每一个字母、函字看成一个字符,所以不会出现乱码的问题。
FileReader(文件字符输入流)
static void test1() { try ( Reader fr = new FileReader("test.txt"); ) { // 1. 一个一个的读取 // int c; // 记住每次读取的字符编号 // while ((c = fr.read()) != -1) { // System.out.print((char) c); // } // 2. 读取多个字符 int len; char[] buf = new char[3]; while((len = fr.read(buf)) != -1) { System.out.print(new String(buf, 0, len)); } } catch (Exception e) { e.printStackTrace(); } }FileWriter
字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效!!!
1.2.4 其他的一些流还有一些其他的流,就不一一列举了。
字节缓冲流 作用:提高字节流读写数据的性能原理:字节缓冲输入流自带了8KB缓冲池,字节缓冲输出流自带了8KB缓冲池 转换流InputStreamReader/OutputStreamWriter 作用:解决不同编码时,字符流读取文本内容乱码的问题解决思路:先获取文件的原始字节流,再将其按照真实的字符集编码转成字符输入流,这样字符输入流中的字符就不乱码了 打印流PrintStream/PrintWriter 作用:可以实现更方便、更高效的打印数据出去,能实现打印啥出去就是啥出去 数据流DataInputStream/DataOutputStream 允许把数据和其类型一并写出去 序列化流 对象序列化:把Java对象写入到文件中去对象反序列化:把文件里的Java对象读出来注意:对象如果要参与序列化,必须实现序列化接口(java.io.Serializable) 2. I/O框架Commons-io是apache提供的一组有关IO操作的小框架,目的是提高IO流的开发效率。需要去Apache官网下载。
3. 特殊文件 3.1. Properties 是一个Map集合(Json类似)核心作用:Properties用来代表属性文件,通过Properties可以读写属性文件里的内容 public class Properties_Demo1 { public static void main(String[] args) throws Exception { // 1. 创建一个Properties对象 Properties properties = new Properties(); // 2. 加载属性文件的键值对到对象中 properties.load(new FileReader("src\\users.properties")); System.out.println(properties); // 3. 根据键取值 System.out.println(properties.getProperty("张无忌")); properties.forEach((k, v) -> { System.out.println(k + " " + v); }); } } 3.2 XML XML本质是一种数据格式,可以存储复杂的数据结构,和数据关系。应用场景:经常用来作为系统的配置文件;或者作为一种特殊的数据结构,在网络中进行传输。 <?xml version="1.0" encoding="UTF-8" ?> <!--以上抬头声明必须放在第一行,必须有!--> <!--根标签只能有一个--> <users> <user id = "1"> <name>JehanRio</name> <sex>男</sex> <password>123456</password> </user> <user id = "2"> <name>Bjergsen</name> <sex>男</sex> <password>654321</password> </user> </users>Java学习之路——IO、特殊文件由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java学习之路——IO、特殊文件”