File总结

1)file
对文件进行操作,创建删除,但不能对文件数据进行读取,或修改。

对象流

ObjectOutputStream,ObjectInputStream()
当前类实例若希望被对象流读写,那么当前类必须实现接口:java.io.Serializable
2)用于存储和读取基本数据类型或对象的处理流,它的强大之处就是可以吧java中的对象序列化,和反序列化.
3)实现了Serializable接口,并没有要求我们实现抽象方法,通常这种接口被称为标识接口.必须要提供一个modifier(修饰符) serialversionUID=long值 一个版本号.,如果不写会自动生成一个,但是当你序列化那个类改变的时候,还原就会发生匹配不上.
4)java的序列化机制是通过在运行时,判断类的serialVersionUid来验证版本的一致性的,在进行反序列化时,jvm会把传来的字节流中的serialVersionUID与本地相应的实体类的serialVersion进行比较,如果人为是一致的,就可以进行反序列化,否则就会出现序列化版本不一样的异常.

字节流

2)InputStream —OutputStream
字节输入输出流,是所有字节流的父类,基于字节操作。
3)fileinputStream—fileoutputStream
fileinputStream :文件读取流,对文件数据进行读取,单字节读取效率慢,所以需要用到,缓冲区,定义一个字节数组来存取,你所读到的字节,使用字符串进行转换。
fileoutputStream:文件写出流:一样对文件进行写入字节;写入效率慢,可自行定义缓冲区。可以使用缓冲流,如果发现文件已存在,则会清除存在的内容,写入新内容—构造方法支持传入一个boolean值,可以追加
缓冲流
缓冲流,分为字节缓冲流,和字符缓冲流, 字节缓冲流:BufferedInputStream ,BufferedOutputStream,字符缓冲流:BufferedReader,BufferedWriter ,它们都对读写效率进形加快,不用自己去定义缓冲区.按行读写数据

字符流

Writer—Reader
所有字符流的父类,字符流基于文本读写数据,底层实际还是完成字节,但是字符与字节的转换,自行完成了,getbytes();
InputStreamReader --OutputStreamWriter
它们都是转换流,对字节转换为字符,构造方法可以直接传入一个编码或解码格式,一般不会单独操作它们,会加上一个字符缓冲流,buffRered Buffwriter ,增加效率。
PrintWriter
具有自动行刷新的缓冲字符流,内部连接BufferedWriter作为其缓冲加速的部分,提供可以对文件直接写操作的构造方法。PrintWriter(Strinf path),PrintWriter(file)以上两种是按照默认的字符集写字符串,以上构造方法还可以传入一个字符集指定编码格式。它相当于PrintnWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStreamWriter(new File))));------------构造方法,你如果传入的是一个流,第二个参数再传一个true,会打开自动行刷新,“行”。会自动flush()。
BufferedReader----BufferedWriter --缓冲流
BufferedReader:(块读)提高文本读取数据,还可以按行读取字符串,

BufferedReader:缓冲字符输入流提供的独有方法readLine(),读到每一行的末尾 |n符就会返回读第二行,读到文件末尾会返回null,如果一行只有换行符回返回空串(不是null)
BufferedWriter :不会一次写一行,但PrintWriter 有。

低级流
直接和文件进行操作的流,高级流不挑低级流
NIO2
1 ) java NIO被称为(new io,NOn-blocking IO),是一套新的api
2)NIO支持面向缓冲区的(IO是面向流的),NIO将以更加高效的方式进行文件的读写操作.
3)java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO
----java.nio.channels.Channel
----FileChannel:处理本地文件
-----SocketChannel: TCP网络编程的客户端的CHannel
-----ServerSocketChannel: TCP网络编程的服务器端的Channel
-----DatagramChannel:UDP网络编程中发送端和接收端的Channel
Path可以看成FIle类的升级版本,实际引用的资源也可以不存在

XML

xml读取
1)创建读取的流 SAXReader sax=new SAXReader();
2)通过你创建的流读取文件,读的时候传入你要读取哪个文件,返回一个文档Document
Document document= sax.read(new File(“path”))
3)获取根标签并返回, – Element root=document.getrootElement;
4)通过根标签找到所有子标签,并返回一个集合List-- List list= root.elements(String Element);
5)拿到装有子标签的集合List后,遍历list.
6)遍历的对象点element(String name),获取当前标签下指定的名字标签
7)获取当前标签后,点 getText(),返回标签中的文本(开始于结束标签的)
8)这两步可以直接调用 elementText(String name)来完成.
9)读取属性是 attributevalue(String name);
xml写入
1)创建一个Document(文档) Document document=DocumentHelper.currentDocument();
2)通过创建的Document对象来创建一个根元素 并返回它,–Element ent=document.addElement(String name);(注意根元素只有一个,所以它的方法只能创建一次).
3)通过返回的根元素创建子标签并返回该子标签,Element ee=ent.addElement(String name);
4)通过返回的子标签,创建你想要的子子标签并返回子子标签,Element e=ee.addElement(String,name);
5)t通过返回的子子标签.写入你想要的内容 e.addText(String text);
6)写入属性 e.addtrribute(“trributeName”,“text”);
7)创建一个XML的而写出流XMLWriter xml=new WMLWriter(
new FileutputStream(filepath);
Outputfotmat.careatprettyprint() 自动换行
);
8)xml.writer(document) ,关闭流.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:在给定的示例中,使用System.IO命名空间中的File类来创建、写入和读取文件。首先,使用File.Create方法创建一个文件,并使用FileStream来写入一些文本信息到文件中。然后,使用File.OpenText方法打开文件,并使用StreamReader逐行读取文件内容。最后,将读取的内容打印到控制台上。 引用\[2\]:在第二个示例中,使用Java的File类来打印指定目录下的文件树形结构。首先,判断给定的路径是否合法,如果是文件,则直接打印文件名;如果是目录,则使用递归的方式遍历目录下的文件和子目录,并打印出树形结构。 引用\[3\]:在第三个示例中,使用System.IO命名空间中的File类来移动文件。首先,使用File.Create方法创建一个文件,然后使用File.Move方法将文件移动到指定的目标路径。移动完成后,检查原始文件是否存在,如果存在则打印出错误信息,如果不存在则打印出移动成功的信息。 根据你的问题,IO File file是一个不完整的表达,无法确定具体指的是哪个示例中的代码。请提供更多的上下文或明确的问题,以便我能够给出更准确的回答。 #### 引用[.reference_title] - *1* *3* [【.Net实用方法总结】 整理并总结System.IO中File类及其方法介绍](https://blog.csdn.net/baidu_33146219/article/details/126445772)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [IO及File介绍](https://blog.csdn.net/m0_46853673/article/details/117047152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值