java学习笔记--IO流

第十二章大纲:
I/O input/output 输入/输出
一、创建文件,借助File类来实现
file.createNewFile() : 创建文件
file.exists() : 判断文件是否存在,如果存在,则返回true
delete() : 删除文件,如果删除成功,则返回true
deleteOnExit() : 程序退出的时候才删除文件

 1 import java.io.File;
 2 import java.io.IOException;
 3 
 4 public class FileDemo {
 5     
 6     public static void main(String[] args) throws IOException {
 7         File file = new File("D:\\123.txt");
 8         //判断文件是否存在
 9         if(!file.exists()){
10             //文件不存在,创建该文件
11             file.createNewFile();
12         }
13         
14     }
15 }

 


二、创建文件夹
exists() : 判断文件夹是否存在,如果存在,则返回true
delete() : 删除文件夹,如果删除成功,则返回true
mkdir() : 创建文件夹
mkdirs() : 创建嵌套的文件夹

 1 import java.io.File;
 2 import java.io.IOException;
 3 
 4 public class FileDemo {
 5     
 6     public static void main(String[] args) throws IOException {
 7         File file = new File("D:\\test");
 8         //判断文件是否存在
 9         if(!file.exists()){
10             //文件不存在,创建该文件
11             file.mkdir();
12         }
13         
14         //多个文件夹嵌套时,使用mkdirs()方法创建文件
15         File file2 = new File("D:\\test2\\demo");
16         //判断文件是否存在
17         if(!file2.exists()){
18             //文件不存在,创建该文件
19             file2.mkdirs();
20         }
21         
22     }
23 }

 

 

 

三、
输入还是输出参照物是内存。我们的程序是在内存运行的
输入:d:\\720.txt--->内存
输出:内存---->f:\\721.txt

字节流和字符流,都可以实现文本的输入输出,区别是读写单位(速度)不一样
字节流:每次读写一个字节 1Byte=8bit 2^8-1 可以表示255个字符
字符流:每次读写一个字符 1字符=2字节 常见汉字5000多 2^16

节点流和过滤流都是对字节流和字符流做了封装,好处是读写速度更快。
1.字节流: FileInputStream 和 FileOutputStream
FileInputStream
read() :每次都一个字节,返回值是int,如果读到头,返回值是-1 想要读完文本中的数据,要用循环
available() :返回可读的字节数,返回值是int
close() :关闭输入流,释放资源

FileOutputStream
write() :向指定文件写数据
close() :关闭输出流

把720.txt文本中的内容输入到721.txt文本中去

 1 import java.io.File;
 2 import java.io.FileInputStream;
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 import java.io.IOException;
 6 
 7 /**
 8  * 字节流演示
 9  * @author Administrator
10  *
11  */
12 public class FileInputDemo {
13 
14     public static void main(String[] args) throws IOException {
15         
16         //打开字节输入流
17         FileInputStream fis = new FileInputStream(new File("D:\\720.txt"));
18         //打开字节输出流
19         FileOutputStream fos = new FileOutputStream(new File("D:\\721.txt"));
20         //获取字节长度
21         int length = fis.available();
22         for(int i =0 ; i < length ; i++){
23             //把从720.txt读取的字节输出到721.txt中
24             fos.write(fis.read());
25         }
26         
27         //关闭输入输出流
28         fis.close();
29         fos.close();
30         
31     }
32     
33 }

 

2.字符流 :FileReader FileWriter

FileReader
read() : 读 参数可以是char数组,存放读到内存中的数据
close() : 关闭资源

FileWriter
write() :写 参数可以是char数组,也可以是String
close() : 关闭资源

 1 import java.io.File;
 2 import java.io.FileNotFoundException;
 3 import java.io.FileReader;
 4 import java.io.FileWriter;
 5 import java.io.IOException;
 6 
 7 public class FileReaderDemo {
 8 
 9     public static void main(String[] args) throws IOException {
10 
11         FileReader fr = new FileReader(new File("D:\\720.txt"));
12         FileWriter fw = new FileWriter(new File("D:\\721.txt"));
13         char[] ch = new char[1024];
14         int i=0;
15         String s="";
16         while((i=fr.read())!=-1){
17             //把int类型的 i ,强转为char类型
18             s=s+(char)i;
19         }
20         
21         //把取出的内容写入到721.txt中
22         fw.write(s);
23         fr.close();
24         fw.close();
25     }
26 
27 }

 

从流向分
输入流 FileInputStream FileReader
输出流 FileOutputStream FileWriter
从读写单位
字节流 FileInputStream FileOutputStream
字符流 FileReader FileWriter

 

补充: 过滤流:给节点流做封装,提供缓冲区,读写速度会更快
BufferedReader
readLine() :每次读取一行
BufferedWriter
write() :写
newLine() :换行

 1 import java.io.*;
 2 public class BufferedDemo {
 3 
 4     public static void main(String[] args) throws IOException {
 5         BufferedReader bfr = new BufferedReader(new FileReader(new File("D:\\720.txt")));
 6         BufferedWriter bfw = new BufferedWriter(new FileWriter(new File("D:\\721.txt")));
 7         //每次读取一行
 8         String str = bfr.readLine();
 9         String ss = str;
10         while(str!=null){
11             System.out.println(str);
12             str = bfr.readLine();
13             
14             //每拼接一次要换行,换行符也可以写成
15             //ss= ss+System.getProperty("line.separator")+str;
16             ss = ss + "\r\n" + str;
17         }
18         bfw.write(ss);
19         bfr.close();
20         bfw.close();
21         
22     }
23     
24 }

 

补充:序列化(Serializable)和反序列化 读写对象 读对象就是反序列化 写对象就是序列化
一个对象想要被序列化,必须实现一个接口:Serializable
ObjectOutputStream
writeObject(obj) :把对象obj作为整体以二进制流的形式写到指定文本中

ObjectInputStream
readObject() :把文本中的二进制对象读入内存

问: 当我们要保存多个对象的时候怎么办?可以多次调用writeObject()实现写,但是读的时候就麻烦了,我们可以把对象放到一个数组中,对数组执行序列化和反序列化操作

 1 import java.io.Serializable;
 2 /**
 3  * 创建一个学生类,实现Serializable接口
 4  * @author Administrator
 5  *
 6  */
 7 public class Student implements Serializable{
 8 
 9     public String name;
10     public String sex;
11     
12 }

 

如果学生类没有实现Serializable接口,会报错java.io.NotSerializableException

对学生对象序列化后,会在磁盘中保存一个二进制文件

 1 import java.io.*;
 2 
 3 /**
 4  * 序列化类
 5  * @author Administrator
 6  *
 7  */
 8 public class XuLieDemo {
 9 
10     public static void main(String[] args) throws  IOException {
11         
12         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("D:\\123.txt")));
13         //声明一个学生类型是数组,把实例化的学生对象存入数组中
14         Student[] stu = {new Student("张三","男"),new Student("丽丽","女")};
15         //对学生类型的数组序列化
16         oos.writeObject(stu);
17         oos.close();
18         
19     }
20     
21 }

 

反序列化操作

 1 import java.io.*;
 2 
 3 /**
 4  * 反序列化类
 5  * @author Administrator
 6  *
 7  */
 8 public class FanXuLieDemo {
 9 
10     public static void main(String[] args) throws IOException, ClassNotFoundException {
11 
12         ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("D:\\123.txt")));
13         Student[] stu = (Student[]) ois.readObject();
14         for (Student student : stu) {
15             System.out.println(student.name+"  "+student.sex);
16         }
17         ois.close();
18         
19     }
20 
21 }

 

转载于:https://www.cnblogs.com/jpwz/p/5689071.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux命令之kill篇

作业四&#xff1a;查询firewall进程&#xff0c;然后杀死 [rootlocalhost 桌面]# ps -aux |grep firewall root 772 0.0 2.0 327912 20704 ? Ssl 15:23 0:00 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid root 5323 0.0 0.0 112660…

ActiveMQ网络连接器

这篇文章对我和任何对网络连接器如何为ActiveMQ工作感兴趣的ActiveMQ贡献者而言都是更多的内容。 我最近花了一些时间查看代码&#xff0c;并认为最好画一些快速的图表来帮助我记住我学到的东西&#xff0c;并在将来发现问题时帮助将来确定在哪里进行调试。 如果我输入有误&…

《程序设计与数据结构》第3周学习总结

学号 20162317 《程序设计与数据结构》第3周学习总结 教材学习内容总结 第三章的内容相比之前两章更为具体&#xff0c;介绍的内容更为集中&#xff0c;主要说到了类和对象的问题&#xff0c;其中也仔细介绍了String类、Random类、Math类、NumberFormat类等类。此外也说到了与类…

Java中带有JWebSocket的WebServerSocket

首先&#xff0c;转到http://jwebsocket.org/下载2个软件包Server and Client。 如果要查看源代码&#xff0c;请下载源代码包。 服务器 解压缩服务器程序包。 转到“ conf”文件夹 选择“ jWebSocket.xml”文件打开 编辑“ jWebSocket.xml”文件&#xff0c;在标签<dom…

OpenCV入门指南----人脸检测

本篇介绍图像处理与模式识别中最热门的一个领域——人脸检测&#xff08;人脸识别&#xff09;。人脸检测可以说是学术界的宠儿&#xff0c;在不少EI&#xff0c;SCI高级别论文都能看到它的身影。甚至很多高校学生的毕业设计都会涉及到人脸检测。当然人脸检测的巨大实用价值也让…

matlab提取艾里斑,艾里斑:我不是雀斑

正是艾里斑&#xff0c;限制了光学仪器的精度我们知道凸透镜能把入射光会聚到它的焦点上&#xff0c;由于透镜的口径有一定大小&#xff0c;限制了光线的传播&#xff0c;所以凸透镜也会发生衍射。这导致透镜无法把光线会聚成无限小的点&#xff0c;而只会在焦点上形成具有一定…

mysql启动错误排查-无法申请足够内存

一般情况下mysql的启动错误还是很容易排查的&#xff0c;但是今天我们就来说一下不一般的情况。拿到一台服务器&#xff0c;安装完mysql后进行启动&#xff0c;启动错误如下&#xff1a; 有同学会说&#xff0c;哥们儿你是不是buffer pool设置太大了&#xff0c;设置了96G内存。…

Spring vs Guice:重要的一个关键区别

根据弹簧对象的名称识别它们 不管使用XML还是Java配置都没有关系&#xff0c;Spring范围大致类似于Map <String&#xff0c;Object>结构。 这意味着您不能有两个名称相同的对象 。 为什么这是一件坏事&#xff1f; 如果您的大型应用程序包含许多Configuration类或XML文件…

php 批量更新死锁,php – 在尝试获取锁定时,哪个查询导致死锁;尝试重新启动事务...

我无法弄清楚哪个Query在尝试获取锁定时导致死锁;尝试重新启动事务.我的mysql包装器有以下几行if (mysql_errno($this->conn) 1213) {$this->bug_log(0,"Deadlock. SQL:".$this->sql);}bug_log写入文件的位置.错误日志文件没有死锁错误,但/var/log/mysqld.…

Task和BackTask

一、总结性知识点&#xff1a; 1、Android应用运行时会创建任务Task&#xff0c;用于存放主窗口2、每一个任务包含一个堆栈数据结构&#xff0c;用于保存当前应用已创建的窗口对象&#xff0c;这个堆栈即回退栈BackStack3&#xff64; 位于回退栈顶的窗口会处于焦点状态4&#…

Java面试题二

1、public、private、protected、Friendly的区别与作用域 public,protected,friendly,private的访问权限如下&#xff1a; 关键字 当前类 包内 子孙类 包外 public √ √ √ √ protected…

使用Spring Roo进行快速云开发–第1部分:Google App Engine(GAE)

Spring Roo是在Java平台上提供快速应用程序开发的工具。 我已经解释了何时使用它&#xff1a; http : //www.kai-waehner.de/blog/2011/04/05/when-to-use-spring-roo 。 Spring Roo目前支持两种针对云计算的解决方案&#xff1a;Google App Engine&#xff08;GAE&#xff09;…

mysql 重装,Windows系统中完全卸载MySQL数据库实现重装mysql

一、在控制面板&#xff0c;卸载MySQL的所有组件控制面板——》所有控制面板项——》程序和功能&#xff0c;卸载所有和MySQL有关的程序二、找到你的MysQL安装路径&#xff0c;看还有没有和MySQL有关的文件夹&#xff0c;全删如果安装在C盘&#xff0c;检查一下C:\Program File…

loadrunner 关联

1、记住关联的位置&#xff08;之前&#xff09;&#xff0c;因为登录之前需要token&#xff0c;才能验证登录是否成功&#xff0c;所以&#xff0c;放在登录之前 转载于:https://www.cnblogs.com/zyp1/p/5692343.html

网页上线后音频不能自动播放

一、问题描述 开发环境谷歌浏览器本地测试通过&#xff0c;网站上线后的音乐不播放&#xff0c;而是自动下载&#xff1f; 开发环境safari浏览器中&#xff0c;音频不播放。 二、问题分析 用audio或者embed标签都有问题&#xff0c;为了节省用户的流量&#xff0c;安卓和ios都默…

Akka STM –与STM Ref和Agent进行乒乓球比赛

乒乓是一个经典示例&#xff0c;其中2个玩家&#xff08;或线程&#xff09;访问共享资源–乒乓球桌并在彼此之间传递Ball&#xff08;状态变量&#xff09;。 使用任何共享资源&#xff0c;除非我们同步访问&#xff0c;否则线程可能会遇到潜在的死锁情况。 PingPong算法非常简…

c mysql二进制,MySQL运用connector C/C+读取二进制字段

MySQL使用connector C/C读取二进制字段MySQL使用connector C/C读取二进制字段&#xff0c;两种方法&#xff1a;用getStringvector vec;while (pResultSet->next()){string str pResultSet->getString("data");vec.insert(vec.end(), str.begin(), str.end())…

在下一个项目中不使用JavaDoc的5大原因

JavaDoc对于框架和库的开发是绝对必要的&#xff0c;这些框架和库为其他框架&#xff08;例如Spring Framework&#xff0c;JDK&#xff09;提供了公共接口。 对于内部企业软件和/或产品开发&#xff0c;我有以下原因会在将来忽略“ 100&#xff05;JavaDoc策略”。 1&#xff…

NPOI操作Excel辅助类

/// <summary> /// NPOI操作excel辅助类 /// </summary> public static class NPOIHelper {#region 定义与初始化public static HSSFWorkbook workbook;[Flags]public enum LinkType{网址,档案,邮件,内容};private static void InitializeWorkbook(){if (workbook …

JSP九大内置对象,七大动作,三大指令

JSP之九大内置对象 隐藏对象入门探索 Servlet 和JSP中输出数据都需要使用out对象。Servlet 中的out对象是通过getWriter()方法获取的。而JSP中没有定义out对象却可以直接使用。这是因为out是JSO的内置隐藏对象。JSP中的常见的9个内置隐藏对象如下 out输出流对象 隐藏对象out是…