不明白什么意思

不明白什么意思

//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();
        }
    }
}


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,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  )
祝学习愉快!

好帮手慕小尤 2020-08-06 10:00:30

同学你好,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()。养成关流的好习惯。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 森林sng #1
    老师,我还是不明白,这些网上都说的有,但就是看不明白,能不能说的通俗一点,形象一点,不要这些抽象的定义
    2020-08-06 13:18:54
好帮手慕小尤 2020-08-05 19:14:23

同学你好,复制同学的代码,并不能确定29、30、33行具体是指哪行代码,如下图所示:

http://img1.sycdn.imooc.com//climg/5f2a9459090fa5d512130445.jpg

建议同学具体指出,便于老师定位问题。

祝学习愉快!

  • 提问者 森林sng #1
    特别是第一行的两个方法,麻烦老师解释一下逻辑 Writer writer = new OutputStreamWriter(new FileOutputStream("file"), StandardCharsets.UTF_8); document.write(writer); writer.close();
    2020-08-05 19:36:59
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师