博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webmagic之爬取数据存储为TXT
阅读量:4347 次
发布时间:2019-06-07

本文共 2235 字,大约阅读时间需要 7 分钟。

1.获取标题建立文件TXT
  • 创建以标题命名的TXT

public static void create(String title) throws IOException {    Configuration config = new Configuration();    config.set("fs.default.name", "hdfs://192.168.146.110:9000");    DistributedFileSystem fs = (DistributedFileSystem) DistributedFileSystem.get(config);    String pathString = "/report/Zbgg/"+title+".txt";    FSDataOutputStream output = fs.create(new Path(pathString));    output.close();}
  • 写入网址和内容

public static void write(String txt , String str)  {        Configuration config = new Configuration();        config.set("fs.default.name", "hdfs://192.168.146.110:9000");        config.set("dfs.support.append", "true");        config.set("dfs.client.block.write.replace-datanode-on-failure.policy", "NEVER");        config.set("dfs.client.block.write.replace-datanode-on-failure.enable", "true");        try {            DistributedFileSystem fs = (DistributedFileSystem) DistributedFileSystem.get(config);            //文件必须存在            String pathString = "/report/Zbgg/"+txt+".txt";            FSDataOutputStream outpustream = fs.append(new Path(pathString));            //System.getProperty("line.separator")换行            outpustream.writeBytes(str);            outpustream.writeBytes(System.getProperty("line.separator"));            outpustream.close();            fs.close();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }
 

写入TXT的内容为乱码

HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.connect();
DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
String content = "传递中文的问题";
out.writeBytes(content);
out.flush();
out.close();
urlConn.disconnect();
依照上面的方式传递中文,服务器得到的一定是一堆乱码,原因:out.writeBytes(content);该语句在转中文时候,已经变成乱码
public final void writeBytes(String s) throws IOException {
int len = s.length();
for (int i = 0 ; i < len ; i++) {
out.write((byte)s.charAt(i));
}
incCount(len);
因为java里的char类型是16位的,一个char可以存储一个中文字符,在将其转换为 byte后高8位会丢失,这样就无法将中文字符完整的输出到输出流中。所以在可能有中文字符输出的地方最好先将其转换为字节数组,然后再通过write写入流,目前尝试过这种方法:把上面链接代码中的out.writeBytes(content);替换为out.write(content.getBytes());先把数据转成BYTE在写入流,执行成功,服务器接收正确的中文内容

转载于:https://www.cnblogs.com/wf1647790534/p/9802985.html

你可能感兴趣的文章
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_21、SpringBoot2.x配置全局异常返回自定义页面...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_35、事务介绍和常见的隔离级别,传播行为...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_42、SpringBoot常用定时任务配置实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第14节 高级篇幅之SpringBoot多环境配置_59、SpringBoot多环境配置介绍和项目实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_41、SpringBoot定时任务schedule讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_43、SpringBoot2.x异步任务实战(核心知识)...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务...
查看>>
UI基础--烟花动画
查看>>
Android dex分包方案
查看>>
ThreadLocal为什么要用WeakReference
查看>>