- 浏览: 1592254 次
- 来自: 上海
文章分类
- 全部博客 (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 1007public static boolean inPool( ... -
UTC时间, GMT时间 ,夏令时
2017-08-18 15:12 2285经常混淆于此,特地研究了一下,记录在此以备忘。 整个地 ... -
java 反射List
2017-02-18 01:58 5663package com.enhance.reflect; ... -
JDK1.5 Exchange 两个线程互换数据
2016-08-04 18:00 1006import java.util.concurrent ... -
JDK1.5 CountDownLatch
2016-08-04 16:25 1057/* * 还有一个利用场景: ... -
java CyclicBarrier 循环障碍阻塞
2016-08-03 23:54 1014//一个同步辅助类,它允许一组线程互相等待,直到到达某个公 ... -
java 信号灯 Semaphore
2016-08-03 23:53 1828更多介绍http://blog.csdn.net/java20 ... -
java 使用读写锁设计一个缓存模型
2016-08-03 23:49 1420import java.util.HashMap; ... -
java 读写锁
2016-08-03 23:46 820import java.util.Random; i ... -
java 多个线程之间同步通信
2016-08-02 17:16 2401import java.util.concurrent ... -
jdk1.5 锁 Lock 和 Condition
2016-08-02 17:03 927// lock 练习 public class Lock ... -
JDK1.5 获取线程执行结果 Callable Future
2016-08-02 15:08 1176import java.util.Random; i ... -
JDK1.5 线程池
2016-08-02 14:48 806import java.util.concurrent ... -
java 多线程ThreadLocal
2016-08-02 00:13 1149import java.util.Random; ... -
java 定时器 Timer
2016-08-01 16:53 3897import java.util.Calendar; ... -
java 多线程同步+通信
2016-08-01 16:48 970/** *父子线程 交替打印10 次, 100次 ... -
java 线程同步
2016-08-01 16:43 1027import java.util.concurrent.l ... -
java多线程练习
2016-08-01 16:35 1843Java 传统多线程 Java 多线程同步 Java 多线 ... -
java 传统多线程
2016-08-01 16:34 1011/** * 传统多线程 */ public ... -
java 图片,剪切,缩放
2016-01-06 10:21 2234package 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 自动转换 ...
Java中有八种基本数据类型,分为两类:整数类型(byte、short、int、long)和浮点类型(float、double),此外还包括布尔类型(boolean)和字符类型(char)。而`String`不是基本数据类型,它是Java中的一个类,用来...
要正确处理汉字等多字节字符,可以使用String类的getBytes方法配合指定的字符编码,例如UTF-8或GBK来处理字符串的字节表示。 15. 打印昨天的当前时刻。 可以通过Calendar类获取当前时间,然后进行相应的减法操作来...
- 将 GB2312 编码的字符串转换为 ISO-8859-1 编码:使用 `String.getBytes("GB2312")` 转为字节数组,然后使用 `new String(bytes, "ISO-8859-1")` 转换回字符串。 9. **Java中访问数据库** - 使用 JDBC 连接...
27. Java流处理输入输出,分为字符流和字节流,有缓冲和非缓冲之分。 28. AWT是原始的图形用户界面库,Swing提供了更多组件和现代UI特性。 29. Java事件处理模式包括监听器、适配器等。 30. Applet安全权限受限,可...
需要先将GB2312字符串转换为字节序列,然后再从字节序列转换为ISO-8859-1编码的字符串。 以上知识点是根据提供的文件内容整理出的Java面试常见的知识点,涵盖了Java基础、集合、异常处理、内部类、多线程、垃圾...
- Java流提供了一种处理数据的方式,分为字节流和字符流。 #### 20. AWT与Swing的主要区别 - **Swing**具有更好的外观定制能力和更高的跨平台兼容性。 #### 21. 事件处理模式 - 通常使用监听器模式,注册监听器...
堆栈是一种遵循先进后出(LIFO)原则的数据结构,可以用`Array`或`LinkedList`来实现,提供`push`和`pop`等基本操作。 #### 48. 集合的作用是什么? 集合用于存储一组对象,提供了灵活的添加、删除、查找等操作,是...
反射机制允许在运行时访问类的信息和操作对象,可以获取类的属性、方法等元数据,并动态创建和调用对象。 **20. 类的返射机制中的包及核心类** 反射相关的包主要是 `java.lang.reflect`,核心类包括 `Class`、`...
30、String是最基本的数据类型吗? 22 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 22 32、是否可以继承String类? 23 33、String s = new String(...
使用`new String(bytes, "ISO-8859-1")`方法,其中`bytes`是按照GB2312编码的字节数组。 #### 32. Strings=newString("xyz");创建了几个StringObject? 创建了一个`String`对象。 #### 33. float型floatf=3.4是否...
【知识点详解】 ...以上内容涵盖了计算机二级等级考试中涉及的多个知识点,包括数据类型、HTML编码、数据库管理、操作系统、编程语言语法、软件调试、排序算法、文件操作、数据库设计以及数据库管理系统等方面。
#### 第19天~第21天:Java中的各种集合容器使用 1. **集合框架概述**: - 集合的定义与分类:List、Set、Map。 - Collection与Map接口的区别。 - Iterator与ListIterator迭代器。 2. **常用集合类**: - List...
- 或者使用`getBytes(charsetName)`方法将字符串转换为指定编码的字节数组。 #### 32. Strings=newString("xyz");创建了几个StringObject? - 这样创建了一个`String`对象,并将其引用赋值给`Strings`变量。 - 字符...
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");...
使用`new String(bytes, "ISO-8859-1")`将GB2312编码的字节数组转换为ISO-8859-1编码的字符串。 #### 32. Strings=newString("xyz")创建了几个StringObject? 只创建了一个`String`对象,因为字符串常量池中已经...
- **基本数据类型与引用类型**:在编程语言中,数据类型分为基本类型和引用类型。基本类型如整型、浮点型等,而引用类型则指向内存中的对象。 - **引用类型的示例**:`string`是一种引用类型,它指向内存中的字符串...
1. `InputStreamReader` 类是用来将字节流转换为字符流的,它用于处理字符编码。 2. 在 Word 中,如果想要设置文字的边框,可以在“格式”菜单中选择“边框和底纹”选项。 3. 用 SQL 查询数据库时,查找15天前参加...
30、String是最基本的数据类型吗? 24 31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 24 32、是否可以继承String类? 25 33、String s = new String("xyz");...