java篇31-java的IO

张开发
2026/6/14 15:20:56 15 分钟阅读
java篇31-java的IO
IO流是存储到盘符和从盘符读取数据的解决方案。File类只能对文件本身进行操作不能读写文件里面存储的数据。IO流用于读写文件中的数据。IO流操作文件类型包括字节流和字符流。字节流可以操作所有类型的文件字符流只能操作纯文本文件。纯文本文件是能用windows记事本打开且能读懂的文件例如.txt文件.md文件。抽象类InputStream、OutputStream、Reader和Writer有不同的实现类。InputStream的实现类FileInputStream操作本地文件的字节输入流。BufferedInputStream带有缓冲区的字节输入流。OutputStream的实现类FileOutputStream操作本地文件的字节输入流。BufferedOutputStream带有缓冲区的字节输入流。一、FileOutputStream操作本地文件的字节输出流可以把程序中的数据写到本地文件中。一书写步骤书写步骤如下1创建字节输出流对象2写数据3释放资源。例如publicclassMyApp{publicstaticvoidmain(String[]args)throwsIOException{FileOutputStreamfosnewFileOutputStream(javase-learning\\src\\example\\org\\domain\\a.txt);fos.write(97);fos.close();}}运行结果是往a.txt文件中写入了字符aFileOutputStream字符输出流的细节1.创建字节输出流对象1构造方法是字符串表示的路径或者是File对象都是可以的2如果文件不存在会创建一个新的文件但是要保证父级路径是存在的。3如果文件已经存在则会清空文件。2.写出数据1write()方法的参数是整数但是实际上写到本地文件中的是整数在ASCII上对应的字符。例如写一个数字97分两次写‘9’和’7’3.释放资源释放资源的意思是解除了对文件资源的占用。二FileOutputStream写数据的3种方式例如一次写入多个数据publicclassMyApp{publicstaticvoidmain(String[]args)throwsIOException{FileOutputStreamfosnewFileOutputStream(javase-learning\\src\\example\\org\\domain\\a.txt);byte[]bytes{97,98,99,100,101};fos.write(bytes);fos.close();}}技巧也可以定义一个字符串对象再用getBytes()方法获取字节数组。三FileOutputSream的换行写和续写1.换行写windows的换行为\r\n先回车再换行。linux的换行为\n。mac的换行为\r。java在windows中写\r\n或\r\n都行最后都会自动补全即为\r\n。publicclassMyApp{publicstaticvoidmain(String[]args)throwsIOException{FileOutputStreamfosnewFileOutputStream(javase-learning\\src\\example\\org\\domain\\a.txt);Stringaapple\r\nbanana;byte[]bytesa.getBytes();fos.write(bytes);fos.close();}}2.续写在new FileOutputStream对象时设置第二个参数为true。二、FileInputStream操作本地文件的字节输入流可以把本地文件中的数据读取到程序中来。一基本操作步骤操作步骤1创建字节输入流对象2读入数据3释放资源。例如读取a.txt文件的一个数据publicclassMyApp{publicstaticvoidmain(String[]args)throwsIOException{FileInputStreamfosnewFileInputStream(javase-learning\\src\\example\\org\\domain\\a.txt);intbfos.read();System.out.println(b);fos.close();}}也可以通过强转打印字符FileInputStream的实现细节1.创建字节输入流对象1如果文件不存在就直接报错2.读取数据1一次读一个字节读出来的是数据在ASCII上对应的数字2读到文件末尾了read()方法返回-13释放资源。二FileInputStream的循环读取publicclassMyApp{publicstaticvoidmain(String[]args)throwsIOException{FileInputStreamfisnewFileInputStream(javase-learning\\src\\example\\org\\domain\\a.txt);intb;intcount0;while((bfis.read())!-1){count;System.out.println(countb(char)b);}fis.close();}}三文件拷贝使用一次读取多个字节的方式一次读取一个字节的方式进行文件拷贝publicclassMyApp{publicstaticvoidmain(String[]args)throwsIOException{//1.创建对象FileInputStreamfisnewFileInputStream(javase-learning\\src\\example\\org\\domain\\a.txt);FileOutputStreamfosnewFileOutputStream(javase-learning\\src\\example\\org\\domain\\b.txt);//2.拷贝intb;while((bfis.read())!-1){fos.write(b);}//释放资源规则先开的流后释放fos.close();fis.close();}}FileInputStream一次读取多个字节例如

更多文章