不明白什么意思
//29、30、33行不明白什么意思,特别是29行,网上查了也看不明白,麻烦老师通俗的讲一下 package three_onexml; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.*; import java.nio.charset.StandardCharsets; public class HrWriter { public void writeXml(){ String file = "D:\\Java\\chengxu\\Study_Java\\Two_JavaWeb\\src\\three_onexml\\hr.xml"; SAXReader reader = new SAXReader(); try { Document document = reader.read(file); Element root = document.getRootElement(); Element employee = root.addElement("employee"); employee.addAttribute("no","3311"); Element name = employee.addElement("name"); name.setText("李铁柱"); employee.addElement("age").setText("37"); employee.addElement("salary").setText("3600"); Element department = employee.addElement("department"); department.addElement("dname").setText("人事部"); department.addElement("address").setText("XX大厦-B105"); /*OutputStreamWriter的功能是将字符转换为字节 创建OutputStreamWriter对象,构造方法中传递字节输出流和指定的编码表名称(StandardCharsets为jdk中的一个类,用于定义字符编码,这里类调用其中的公共变量UTF-8)*/ Writer writer = new OutputStreamWriter(new FileOutputStream("file"), StandardCharsets.UTF_8); /*使用OutputStreamWriter对象中的方法write,把字符转换为字节存储缓冲区中(编码)*/ document.write(writer); /*释放资源*/ writer.close(); } catch (Exception e) { e.printStackTrace(); } } }
正在回答
同学你好,1.OutputStreamWriter(OutputStream out, Charset cs)第二个参数(cs)是指定的字符编码,则此方法就是通过指定的字符编码将字符流转换为字节流。
2. FileOutputStream(File file)是文件输出流,是用于将数据写入File对象中。File对象代表磁盘中实际存在的文件和目录。所以new OutputStreamWriter(new FileOutputStream("file"), StandardCharsets.UTF_8);同学可以理解是,将字符转换为字节,添加到File对象中(文件中)。
3. document.write(writer);就是写入。
4. write.close()就是关闭流。
5. 如果同学还存在问题,同学可参考在线api(https://www.matools.com/api/java8 )
祝学习愉快!
同学你好,1. 同学描述的方法是否是OutputStreamWriter()和FileOutputStream()方法,如果是,则
OutputStreamWriter(OutputStream out, Charset cs)创建一个使用给定字符集的OutputStreamWriter。
FileOutputStream(File file)创建文件输出流以写入由指定的 File对象表示的文件。
如果不是,可重新描述一下。
注:OutputStreamWriter是字符的桥梁流以字节流:向其写入的字符编码成使用指定的字节charset 。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
2. 关于document.write(writer);则同学理解是正确的。把字符转换为字节存储缓冲区中(编码).
3.当转换完毕时,OutputStreamWriter流就可以进行关闭了。所以使用 write.close()释放资源。不过有一个注意事项:
当同学未释放资源时,内容可能会被清空。因当写入时,相当于重新写这个文件,要写入的内容还存在内存中,没有写到硬盘上,而write.close()之前,会自动刷新一下,刷新到硬盘上,所以,没有写write.close()时,内容有时会被清空,所以建议同学写上write.close()。养成关流的好习惯。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星