java io流学设置编码_Java学习日志(21-2-IO流-基本数据类型与字节数组对象与、编码解码)...

操作基本数据类型的流对象DataStream

/*

可以用于操作基本数据类型数据的流对象

*/

import java.io.*;

class DataStreamDemo{

public static void main(String[] args)throws IOException{

// writeData();

// readData();

// writeUTFDemo();

// OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("utf.txt"),"utf-8");

// osw.write("你好");

// osw.close();

readUTFDemo();

}

public static void writeUTFDemo()throws IOException{

DataOutputStream dos=new DataOutputStream(new FileOutputStream("utfdate.txt"));

dos.writeUTF("你好");

dos.close();

}

public static void readUTFDemo()throws IOException{

DataInputStream dis=new DataInputStream(new FileInputStream("utfdate.txt"));

String s=dis.readUTF();

System.out.println(s);

dis.close();

}

public static void readData()throws IOException{

DataInputStream dis=new DataInputStream(new FileInputStream("data.txt"));

int num=dis.readInt();

boolean b=dis.readBoolean();

double d=dis.readDouble();

System.out.println("num:"+num);

System.out.println("boolean:"+b);

System.out.println("double:"+d);

dis.close();

}

public static void writeData()throws IOException{

DataOutputStream dos=new DataOutputStream(new FileOutputStream("data.txt"));

dos.writeInt(234);

dos.writeBoolean(true);

dos.writeDouble(9887.543);

dos.close();

}

}

操作字节数组ByteArrayStream

/*

ByteArrayInputStream:在构造的时候需要接收数据源,而且必须是一个字节数组

ByteArrayOutputStream:在构造的时候不用定义数据目的,内部已经封装了可变长度的字节数组

这两个流对象都操作的数组并没有使用系统资源,不用进行关闭

输出录入设备中的内存属于ArrayStream

*/

import java.io.*;

class ByteArrayStream{

public static void main(String[] args){

// 数据源

ByteArrayInputStream bis=new ByteArrayInputStream("ABCDEFD".getBytes());

// 数据目的

ByteArrayOutputStream bos=new ByteArrayOutputStream();

int by=0;

while((by=bis.read())!=-1){

bos.write(by);

}

System.out.println(bos.size());

System.out.println(bos.toString());

// bos.writeTo(new FileOutputStream("a.txt")

}

}

转换流的字符编码

ASCII:美国标准信息交换码

用一个字节的7位可以表示,识别中文

ISO8859-1:拉丁码表,欧洲码表

用一个字节的8位表示

GB2312:中文编码表

GBK:中文编码表升级

Unicode:国际标准码,融合多种文字

所有文字都用两个字节来表示,Java所用

UTF-8:最多用三个字节来表示一个字符

import java.io.*;

class EncodeStream{

public static void main(String[] args)throws IOException{

// writeText();

readText();

}

public static void readText()throws IOException{

InputStreamReader isr=new InputStreamReader(new FileInputStream("gbk.txt"),"utf-8");

char[]buf=new char[10];

int len=isr.read(buf);

String str=new String(buf,0,len);

System.out.println(str);

isr.close();

}

public static void writeText()throws IOException{

OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("gbk.txt"),"UTF-8");

osw.write("你好");

osw.close();

}

}

字符编码/解码

/*

编码:字符串变成字节数组

解码:字节数组变成字符串

String-->byte[];str.getBytes();

byte[]-->String;new String(byte[]);

*/

import java.util.*;

class EncodeDemo{

public static void main(String[] args)throws Exception{

String s="你好";

// 编码

byte[]b1=s.getBytes("gbk");

System.out.println(Arrays.toString(b1));

// 解码

String s1=new String(b1,"ISO8859-1");//输出乱码

System.out.println("s1="+s1);

// 对其进行编码

byte[]b2=s1.getBytes("ISO8859-1");

System.out.println(Arrays.toString(b2));

String s2=new String(b2,"gbk");

System.out.println("s2="+s2);

}

}

字符编码

/*

联通二字GBK码与UTF-8一致

*/

class EncodeDemo2{

public static void main(String[] args)throws Exception{

String s="联通";

byte[] by=s.getBytes("gbk");

for(byte b:by){

// 转码为二进制

System.out.println(Integer.toBinaryString(b&255));

}

}

}

练习

/*

有五个学生,每个学生有3门课的成绩

从键盘输入以上数据(姓名、三门课成句)

输入格式:zhangsan,30,40,60计算出总成绩

并把学生信息和计算出的总分数高低顺序存放在“stud.txt”中

1.描述学生对象

2.定义一个可操作学生对象的工具类

思想

1.通过获取键盘录入一行数据,并将改行中的信息取出封装成学生对象

2.因为学生有很多,那么需要储存,使用到集合

需要排序,采用TreeSet

3.将集合的信息写入文件

*/

import java.util.*;

import java.io.*;

class Student implements Comparable{

private String name;

private int ma,cn,en;

private int sum;

Student(String name,int ma,int cn,int en){

this.name=name;

this.ma=ma;

this.cn=cn;

this.en=en;

sum=en+ma+en;

}

public int compareTo(Student s){

int num=new Integer(this.sum).compareTo(new Integer(s.sum));

if(num==0){

return this.name.compareTo(s.name);

}

return num;

}

public String getName(){

return name;

}

public int getSum(){

return sum;

}

public int hashCode(){

return name.hashCode()+sum*78;

}

public boolean equals(Object obj){

if(!(obj instanceof Student)){

throw new ClassCastException("类型不匹配!");

}

Student s=(Student)obj;

return this.name.equals(s.name)&&this.sum==s.sum;

}

public String toString(){

return "student["+name+","+ma+","+cn+","+en+"]";

}

}

class StudentInfoTool{

public static Set getStudents()throws IOException{

return getStudents(null);

}

public static Set getStudents(Compatatorcmp)throws IOException{

BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));

String line=null;

Setstus=null;

if(cmp==null){

stus=new TreeSet();

}

else{

stus=new TreeSet(cmp);

}

while((line=bufr.readLine())!=null){

if("over".equals(line)){

break;

}

String[]info=line.split(",");

Student stu=new Student(info[0],Integer.parseInt(info[1]),Integer.parseInt(info[2]),Integer.parseInt(info[3]));

stus.add(stu);

}

bufr.close();

return stus;

}

public static void write2File(Set stus)throws IOException{

BufferedWriter bufw=new BufferedWriter(new FileWriter("stuinfo.txt"));

for(Student stu:stus){

bufw.write(stu.toString()+"\t");

bufw.write(stu.getSum()+" ");

bufw.newLine();

bufw.flush();

}

bufw.close();

}

}

class StudentInfoTest{

public static void main(String[] args)throws IOException{

Comparatorcmp=Collections.reverseOrder();

Setstus=StudentInfoTool.getStudents();

StudentInfoTool.write2File(stus);

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

dotnet中的counters说明(二)

上篇说了System.Runtime,它负责应用运行的环境资源的收集,这篇要继续说AspNetCore的Hosting,Http.Connections和Server.Kestrel三个计数器。同时,下面指标各项()里的项目是--counters 参数[]里的项,用逗号分隔多项指标。Microsoft…

Asp组件中级入门与精通系列之五

我们学习来看一下Response对象。其实我们前面的教程中一直都在使用这个对象的Write方法。 这里我们用Response对象设置cookie。 ? 打开vb6,新建Activex Dll工程。工程名修改为fCom,类名修改为fZ5 引用“Microsoft Active Server Pages Object”对象库。 创建两个组件事件&…

有这些好习惯,可以让你悄悄变优秀

全世界只有3.14 %的人关注了青少年数学之旅这是一个普遍无趣的时代,很多人看似忙到起飞内在却空虚迷茫。今天我们为你诚意推荐几个公众号它们会成为你生活的一剂调味料,让你做一个学识丰富、灵魂有趣的人。快来关注,开启精彩的生活吧&#xf…

java设置access-allow_Java Web如何设置多个Access-Control-Allow-Origin

有没有办法让Access-Control-Allow-Origin header允许设置multiple cross-domains呢?如果设置response.addHeader("Access-Control-Allow-Origin","*");感觉这个接口太开放了,不太安全。 我想只设置自己指定的若干个域名或者端口可以…

paip.提升用户体验--提升java的热部署热更新能力

paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力 "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应用。。作者Attilax 艾龙, EMAIL:1466519819qq.com来源&#x…

夏利车电动窗功能设定

夏利车电动窗功能设定 我车的前有门电动车窗坏了,所以去汽配城购买了电动升降器,准备自己进行更换,修车的要我100元RMB,自己购买配件花了我65省了35元呵呵, 但是自己花了很长时间更换完成之后发现车窗怎么也关不严&…

微软 MS Learn 上线 Blazor 入门教程

微软官方学习网站 MS Learn 上线了 Blazor 入门教程模块,希望通过这个课程,让开发人员了解如何设置开发环境,以及如何使用 Blazor、Visual Studio Code 和 C# 生成你的首个 Web 应用。Build a web app with Blazor - Learndocs.microsoft.com…

Type Casting

Type Casting C : Documents : C Language Tutorial : Type Casting Search: userpass[register] javascript and cookies required C Language TutorialIntroduction?Instructions for useBasics of C?Structure of a program?Variables. Data Types.?Constants?Oper…

世界最牛实验室,堪称诺贝尔奖孵化器!到底是个怎样神奇的存在?!

▲ 点击查看随着诺贝尔各个奖项陆陆续续的公布,卡文迪许实验室,又开始重回大众视野。在这个世界最牛实验室之一的实验室里,仅仅过去了一百多年,就不断涌现出一批又一批世界一流的科学家:把电与磁进行有机统一的麦克斯…

java接口那一节是哪的知识_Java中的接口知识汇总

Java中的接口知识汇总发布于 2020-4-29|复制链接本文给大家汇总介绍了在java中的接口知识,包括为什么要使用接口、什么是接口、抽象类和接口的区别、如何定义接口以及定义接口注意点,希望大家能够喜欢一.为什么要使用接口 假如有一个需求:要求…

用C语言实现解析简单配置文件的小工具

本文介绍作者写的一个小工具,简单的代码中包含了C语言对字符串的处理技巧,对文本文件的简单解析,二进制文件的数据复制的方法,以及格式化输出文本文件的示例。 工具的输入是如下内容的配置文件: [plain] view plaincop…

Delphi应用程序在命令行下带参数执行返回命令行提示的问题

在命令行模式(CMD)下执行时,想获得执行参数,用以下变量: ParamCount:参数个数 ParamStr:为参数数组 如果想在执行完一个操作后在命令行作出相应提示,就应该在相应位置放入…

开源的负载测试/压力测试工具 NBomber

负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要。尽管它们的某些测试是相同的,但目标不同。负载测试:测试应用是否可以在特定情况下处理指定的用户负载,同时仍满足响应目标。应用在正常状态下运行。压力测试:在极端…

人生失败的31种致命原因

人生失败的31种致命原因 一、不利的遗传背景。天生智力不足的人,是没什么办法可想的。唯一的补救办法就是“以勤补拙”。 二、缺乏明确的人生目标,凡是没有明确人生目标的人,便没有成功的希望,在我曾经分析过的100人中&#x…

男人都应该懂的一张图。。 | 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅美国人为了教民众如何辨别韩国人制作的韩国女性标准照左右军事成为一个有钱人的概率有多高?最新版男人都该懂的汽车品牌从属关系图twi:NOCO_1002肥胖和骨架没有必然联系800斤胖子的X射线照 科普君XueShu 雪树来猜一猜这是…

python 抓取的网页默认是bytes的,要转码

python 抓取的网页默认是bytes的,要转码.查看网页源码可以看到,我本次抓取的网页的编码方式是utf-8的.req urllib.request.Request(urlmyurl,headers myheaders) data urllib.request.urlopen(req).read() print(data.decode("UTF-8"))这样就正常显示中文了转载于…

FireFox与IE的兼容

1. JavaScript对象的引用 为了减少JavaScript对象的下载次数,Tasian只会在浏览器第一次请求应用时才会下载JavaScript文件。JavaScript对象只会驻留在Top级窗体,任何其它窗体需要引用到该JavaScript对象,只需要在引如下的方式进行引用就行&am…

多语言应用开发中本地化信息对照表

多语言应用开发中本地化信息对照表。包含区域编号、本地化名称、英语名称、中文名称、国家地区码、语言代码和流通币种等。区域编号本地化名称英语名称中文名称国家地区语言流通币种排序id-idBahasa IndonesiaIndonesian印度尼西亚语IDidIDR1ms-myBahasa MelayuMalay (Malaysia…

学做菜咯

以前在QQ空间发的贴,现在转到这边来,嘿嘿。青蛙达 - 07月28日- 14时28分今天中午做我个人最喜欢的菜之一《咖喱鸡饭》 早上到超市买了: 大蒜头、洋葱、南瓜、鸡翅膀、咖喱粉、胡椒粉、白糖、桂皮 回来发现原来把辣椒粉当成胡椒粉买回来了....…

java一般方法有哪些方法有哪些方法_Java代码优化有哪些方法?

Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积、提高代码运行效率是有巨大帮助的,还能在一…