- 浏览: 1571579 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
java之 21天 (二) 操作基本数据类型,字节数组的流 和 字符编码
- 博客分类:
- Java
操作基本数据类型的流对象
用于操作字节数组,字符数组 的流对象
字符编码
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; /** * 操作基本数据类型的流对象 * DataInputStream 和 DataOutputStream */ public class DataStream { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //writeData(); //readDate(); //writeUTFDemo(); //writeUTFADemo(); //readUTFDemo(); readUTFADemo(); } //常用 字符编码 读取 public static void readUTFADemo() throws IOException{ InputStreamReader isr=new InputStreamReader(new FileInputStream("E:\\utf.txt"),"UTF-8"); char[] buf=new char[1024]; int len=isr.read(buf); String s=new String(buf,0,len); System.out.println(s); } //修改版定UTF 专门读取方法 public static void readUTFDemo() throws IOException{ DataInputStream dis=new DataInputStream(new FileInputStream("E:\\utfdata.txt")); //DataInputStream dis=new DataInputStream(new FileInputStream("E:\\utf.txt")); //会报错, EOFEXception String s=dis.readUTF(); System.out.println(s); dis.close(); } //常用的 utf 写入 public static void writeUTFADemo() throws IOException{ OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("E:\\utf.txt"),"UTF-8"); osw.write("你好"); osw.close(); } //修改版定UTF 读取 只能使用专门的指定 读取方法 public static void writeUTFDemo() throws IOException{ DataOutputStream dos=new DataOutputStream(new FileOutputStream("E:\\utfdata.txt")); dos.writeUTF("你好"); //与机器无关的编码 dos.close(); } //读取 int boolean double public static void readDate() throws IOException{ DataInputStream dis=new DataInputStream(new FileInputStream("E:\\data.txt")); int num=dis.readInt(); boolean flag=dis.readBoolean(); Double dd=dis.readDouble(); System.out.println(num+"\\"+flag+"\\"+dd); } //写入 int boolean double public static void writeData() throws IOException{ DataOutputStream dos=new DataOutputStream(new FileOutputStream("E:\\data.txt")); dos.writeInt(234); //4个字节 dos.writeBoolean(true); //1个字节 dos.writeDouble(89555.455); //8个字节 dos.close(); } }
用于操作字节数组,字符数组 的流对象
import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileOutputStream; import java.io.IOException; /** * 用于操作字节数组的流对象 * ByteArrayInputStream: 在构造的时候 需要接口数据源,而且数据源是一个字节数组 * ByteArrayOutputStream: 在构造的时候,不用定义数据目的, 因为该独享中已经内存封装了一个可变长度的字节数组. * 这就是 数据目的 * * 用于操作字符数组的流对象 * charArrayReader * charAarrayWriter * * 因为这连个个流对象操作都是数组,并没有使用系统资源,所以不需要进行关闭. * * * 在 讲流的操作规律的时候 * 源设备: * 键盘:System.in, 硬盘:FileStream ,内存: ArrayStream * 目的设备 * 键盘:System.out, 硬盘:FileStream ,内存: ArrayStream * * 用流的读写思想来操作数组 * */ public class ByteArrayStream { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //数据源 ByteArrayInputStream bis=new ByteArrayInputStream("adfsde".getBytes()); ByteArrayOutputStream bos=new ByteArrayOutputStream(); System.out.println(bos.size()); //缓冲的大小 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("E:\\IOArray.txt")); } }
字符编码
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Arrays; /** * 字符编码 * 字符编码的出现为了方便操作字符 * 更重要的是加入了编码转换 * 通过子类转换流来完成 * InputStreamReader * OutputStreamWriter * (PrintStream,PrintWriter 也加入编码表) * 在两个对象构造的时候可以加入字符集. * * 编码表的由来 * 计算机只能识别二进制数据,早起由是电信号 * 为了方便应用计算机,让它可以识别个个国家的文字 * 就将各个国家的文字用数字来表示,并一对一,形成一张表. * 这就是编码表 * * 常见的编码表 * ASCII:美国标准信息交换码 * 用一个字节的7位可以表示. * ISO8859-1:拉丁码表.欧洲码表 * 用一个字节的8位可以表示. * GB2312:中国的中文编码表. * 6000-7000 多 * GBK:中国的中文编码表升级.融合了更多的中文文字符号. * 上万了 * Unicode: 国际标准码,融合了多种文字. * 所有文字都有两个字节来表示,java语言使用的就是unicode * UTF-8:unicode transform format -8:最多三个字节来表示一个字符.一个字节 装不下,采用两个 ,两个不行 三个. * * * * 编码: 将字符串 --变成 ---字节数组 * String---byte: str.getBytes(charsetname); //默认是 GBk * 解码: 将字节数组 ---变成 ---字符串 * byte[] ---String: new String(byte,charsetname); 默认 gbk * */ public class EncodeDemo { public static void main(String[] args) throws IOException{ //writeText(); //readText(); //encodeDemo(); encodeDemo2(); } public static void encodeDemo2() throws IOException{ String s="你好"; byte[] b1=s.getBytes("GBK"); System.out.println(Arrays.toString(b1)); String s1=new String(b1,"ISO8859-1");//已经是 乱码的文字了 System.out.println(s1); byte[] b2=s1.getBytes("ISO8859-1"); System.out.println(new String(b2,"GBK")); } public static void encodeDemo1() throws IOException{ String s="你好"; byte[] b1=s.getBytes("GBK"); System.out.println(Arrays.toString(b1)); String s1=new String(b1,"GBK"); System.out.println(s1); } public static void encodeDemo() throws IOException{ String s="你好"; byte[] b1=s.getBytes(); System.out.println(Arrays.toString(b1)); String s1=new String(b1); System.out.println(s1); } public static void readText() throws IOException{ InputStreamReader isr=new InputStreamReader(new FileInputStream("E:\\gbk.txt")); char [] buf=new char[10]; int len=isr.read(buf); String s=new String(buf,0,len); System.out.println(s); } //默认的使用gbk public static void writeText() throws IOException{ OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("E:\\gbk.txt")); osw.write("你好"); //4个字节: 默认的是 GBK 6个字节 UTF-8 8个自己 修订版UTF osw.close(); } }
发表评论
-
检测一个字符串是否在jvm的常量池中
2018-12-18 17:34 936public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2223经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5589package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 908import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1013/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 950//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1779更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1367import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 775import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2362import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 875// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1127import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 761import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1105import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3841import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 922/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 973import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1794Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 962/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2168package out; import ja ...
相关推荐
33 1.9 习题 33 第2章 Java的基本数据类型(精彩视频:38分钟) 34 2.1 数据类型 34 2.1.1 整型 34 2.1.2 浮点型 35 2.1.3 字符型(char) 36 2.1.4 布尔型(boolean) 36 2.2 数据类型间的转换 36 2.2.1 自动转换 ...
30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String(...
30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");...
30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");...
30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");...
30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");...
30、String是最基本的数据类型吗? 24 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 24 32、是否可以继承String类? 25 33、String s = new String("xyz");...
30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String("xyz");...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个,如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该输出“我ABC”,而不是“我ABC+汉...
二进制数据类型 row 1~2000字节 可变长二进制数据,在具体定义字段的时候必须指明最大长度n long raw 1~2GB 可变长二进制数据 LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob...
5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...
5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 ...
5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11...
5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. MySQL服务器时区支持 5.11. MySQL...