c语言将数据写入文件后乱码_html文件的下载,如何使用字节流,如何使用转换流...
package com.jd.io;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;/** 转换流:InputStreamReader OutputStreamReader* 1.以字符流的形式操作字节流* 2.指定字符集* 这里我使用转换流的方式实现*/
public class ConvertTest2 {public static void main(String[] args) {//操作一个网络流 下载百度的源代码 网络流也是一个字节流打开一个网络流(属于字节流))//我们在提高性能一下使用缓冲流try(BufferedReader is= new BufferedReader(new InputStreamReader(new URL("http://www.baidu.com").openStream(),"utf-8"));BufferedWriter os=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("1.html")))){//读取String line=null;while((line=is.readLine())!=null) {System.out.println(line);os.write(line);os.newLine();}os.flush();}catch(IOException e) {System.out.println("操作异常");}}
}
转换流的作用就是将我们的字节流转换成字符流
字节流是可以处理一切内容的,包括图片,音频,视频,也包括纯文本,在很多系统和框架的底层返回给我们的都是字节流(有时候我们使用字节流处理并不方便,这就是我们为什么要转换字符流的原因)
System.in,System.out都是字节流,因为我们键盘输入还是输出的都是字符串,所以我们可以对它进行转换。
在我们的底层,如果是纯文本的话就涉及到一个东西是字符集。将字节转成字符叫做解码(在解码的过程中就涉及到字符集的问题,如果工程的字符集跟源头(文件)的字符集不统一就会出现乱码),所以这个时候我们最好可以指定字符集
从字节流到字符流的转换
只要我们看见Reader都建议加一个BufferedReader
将写入的字符编码为字节
讲一下什么使用字节流,什么时候使用字符流
其实底层都是字节,我们使用字符是为了处理一些文本和字符串提高性能
字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,而字节流处理单元为1个字节,操作字节和字节数组。所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,所以它对多国语言支持性比较好!如果是音频文件、图片、歌曲,就用字节流好点,如果是关系到中文(文本)的,用字符流好点
所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列
字节流和字符流的使用:
https://www.cnblogs.com/DONGb/p/7844123.html
Java IO流中提供了两种用于将字节流转换为字符流的转换流。其中InputStreamReader用于将字节输入流转换为字符输入流,其中OutputStreamWriter用于将字节输出流转换为字符输出流。使用转换流可以在一定程度上避免乱码,还可以指定输入输出所使用的字符集
https://blog.csdn.net/qq_44149554/article/details/89541771?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
讲一下缓存流和转换流的结合,看见Reader我们就可以使用缓存流提高性能
使用转换流实现字节到字符的转换以及输入和输出
- 节点流:可以从或向一个特定的地方(节点)读写数据。如FileReader.
- 处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
讲一下什么是节点流
字符流和字节流就可以叫做节点流
出现乱码的原因有两种:
1.字节数不够出现乱码
2.字符集不统一出现乱码
html文件的下载,如何使用字节流,如何使用转换流
在java中文件的传输其实就是靠流来实现的,网络流也是属于字节流,所以我们先使用字节流
我觉得写的时候应该是全部都写出来才写的,具体debug才知道,我这里就不弄了
为什么读取的时候乱码,写入的时候不乱码
忽然一下子自己就懂了,总之写入的时候只要讲字符集设置的和源头的文件一致就可以了
https://www.zhihu.com/video/1229171897016815616
c语言将数据写入文件后乱码_html文件的下载,如何使用字节流,如何使用转换流...相关推荐
- oracle 控制文件 scn,重建控制文件后, 控制文件中的数据文件检查点SCN来自哪里...
重建控制文件后, 控制文件中的数据文件检查点SCN来自哪里 这个问题要看具体的情况,比如: 1. 数据库是shutdown immediate,也就是说数据库是一致的状态,重建控制文件后,SCN 以d ...
- 关于SVN添加无用的受控文件后,取消文件受控的方法
问题:关于SVN添加无用的受控文件后,取消文件受控的方法 答案:右键需要去掉受控的文件,选择TortoiseSVN->Unversion and add to ignore list->去 ...
- VS2010 打包生成exe文件后 运行安装文件出现 TODO:文件说明已停止工作并已关闭
一.VS2010 打包生成exe文件后 运行安装文件出现 TODO:<文件说明>已停止工作并已关闭 TODO: <文件说明>已停止工作 原因: 打包的时候在文件系统中建立了 ...
- C语言实现数据写入文件
向文件中写入数据(C语言) 在分析数据时,首先要解决数据的保存问题,c中提供了相应的函数来实现将数据写入指定文件中的功能 fopen函数 使用 fopen( ) 函数来创建一个新的文件或者打开一个已有 ...
- c语言将数据写入mysql中_用C语言操作MySQL数据库
先看结构体 ---------------------------------------------- 以下代码块是用来连接数据库的通讯过程,要连接MYSQL,必须建立MYSQL实例,通过mysql ...
- ie浏览器打开aspx文件乱码_html文件的中文乱码问题与在浏览器中的显示问题
我今天的页面也是出现了乱码,所以在网上查找了相关的问题,看来一下,这个方法挺不错的,我也试验了呢,我用的editp编辑器,在文档-文件编码-更改文件编码-选择自己所需要的编码就行 在网页中,中文乱码的 ...
- Scratch二次开发:关于增加的扩展导出sb3文件后,导入文件失败问题
这里写自定义目录标题 问题描述: 解决方案: 问题描述: 无论是通过vm的extension增加扩展,还是通过scratch-blocks编译增加扩展块,直接保存作品文件后,再次导入作品文件失败. 解 ...
- c语言将数据写入文件后乱码_c语言,数据能写入文件,但是从文件读取数据的时候,出现了乱码,如下代码,求解答...
//写入数据代码#include#defineSIZE2typedefstructstu1//学生信息表{charname[10];intnum;intage;charaddr[15];}studen ...
- c语言将数据写入文件后乱码_C语言 文件写入输出。文件载入后输出是乱码,纠结啊!...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 void save1() //将工具的基本信息保存至文件:"工具基本信息.file" { FILE*fp; //定义fp是一个指向FI ...
最新文章
- 附录3:Pandas实例记录
- 机器学习(MACHINE LEARNING)种群竞争模型
- 五天带你学完《计算机网络》·第二天·数据链路层
- 数据类型介绍和表的创建
- 安全左移理念,鹅厂 DevSecOps 如何实践?
- 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统
- LOOP WITH CONTROL 用法
- 如何使用Linux重置Windows密码
- [导入]用ASP.Net(C#)连接Oracle数据库的方法
- python输出字符_python输出字符
- 仓储系统流程图_有效的仓储物流管理的6个重要提示
- UnityGI5:实时 GI 与光探代理体
- dom4j 基本操作
- ifix组态软件研究控制按钮权限
- Java代理模式——CGLIB动态代理
- oracle 启用job,Oracle job启动与关闭
- impala添加kerberos认证
- 双硬盘安装双系统,配置显卡驱动,安装cuda,pycuda
- matlab 画qq图,科学网—[转载]R语言绘制QQ图 - 刘朋的博文
- 计算机无误的英语,“开电脑”的英语正确表示是哪个?说错了就尴尬