- 浏览: 120387 次
- 性别:
- 来自: 广西
文章分类
最新评论
-
greemqqran:
这方法 源码,是怎么的哦?
可变参数,数组与集合之间的转换 -
greemqqran:
Arrays.asList
可变参数,数组与集合之间的转换 -
ricoyu:
引用? super E:接收的是E类型对象应该是: ? sup ...
泛型-
IO包中其他的对象。 1,RandomAccessFile:封装了字节流。 特点:可以对数据进行读和写的操作。通过构造函数的第二个参数模式来区分读写。r rw。 好处:对于规则的数据可以通过指针的偏移进行随机的数据获取。 方法 :seek(),skipBytes(),getFilePointer(). 注意:如果在指定位置写入数据,该位置如果已存在数据,那么会发生局部数据覆盖。 2,管道流:PipedInputStream和PipedOutputStream 特点:读取流和写入流可以进行连接。通过这两个流对象构造函数,或者通过两个流对象connect方法。 通常都需要结合多线程进行引用。 3,打印流PrintWriter与PrintStream 字节打印流:PrintStream:System.out对应的类型就是PrintStream。 该类构造函数可以接收三种类型的参数: a,File b,String name c,OutputStream 前两者在传递参数时,可以指定字符编码。 后者传递参数是,可以指定是否自动刷新。 字符打印流:PrintWriter。 该类构造函数可以接收四种类型的参数: a,File b,String name c,OutputStream d,Writer 前两者在传递参数时,可以指定字符编码。 后两者传递参数时,可以指定是否自动刷新。 该自动刷新动作,只有println,printf,format方法来完成。 该打印流较为常用。在日后学习javaweb中,在进行往客户端应答的时候通过response既可以获取PrintWriter对象,通过将html数据打印到客户端,客户端通过浏览器进行数据解析并展现页面效果。 需求:通过打印流操作字符数据,需要编码,同时也需要提高效率。 PrintWriter out = new PrintWrite(new BufferedWriter(new OutputStreamWriter(new FileOutputStream("a.txt"),"UTF-8"))); 4,序列流:SequenceInputStream 特点:用来将多个读取流合并成一个流,操作多文件数据较为方便。 它的构造函数有两个: 一个可以将两个流合并成一个流。 一个可以将枚举Enumeration中的流对象合并一个流。 通常获取Enumeration是通过Vector的elements方法来完成。但是Vector效率较低,所以该用ArrayList。 代码如下: public void show() { ArrayList<FileInputStream> al = new ArrayList<FileInputStream>(); for(int x=1; x<=3; x++) { al.add(new FileInputStream(x+".txt")); } final Iterator<FileInputStream> it = al.iterator(); Enumeration<FileInputStream> en = new Enumeration() { public boolean hasMoreElements() { return it.hasNext(); } pullic FileInputStream nextElment() { return it.next(); } }; SequenceInputStream sis = new SequenceInputStream(en); FileOutputStream fos = new FileOutputStream("a.txt"); byte[] buf = new byte[1024]; int len = 0; while((len=sis.read(buf))!=-1) { fos.write(buf,0,len); } fos.close(); sis.close(); } 5,操作对象ObjectInputStream与ObjectOutputStream 特点:可以用流直接操作Object.将对象冲对内存存储到了硬盘上,称为:对象的本地持久化。 注意:被操作的Object 必须要实现一个标记接口Serializable,该接口中没有方法。 该接口用来给类进行UID指定。 可以通过ObjectOutputStream的writeObject方法。来完成对象的持久化。 通过ObjectInputStream的readObject方法,获取存储的对象。 注意:static的成员,还有非静态但被transient关键字所修饰, 该属性的对象特有值不会进行持久化存储。 这两个对象在构造的时候都需要传入一个字节流进行。 6,操作基本数据类型DataInputStream与DataOutputStream 专门用于操作基本数据类型。如:writeInt(),readInt(). writeUTF(),,readUTF(); 所使用的utf是utf-8修改版。通过writeUTF()写入的数据,必须通过readUTF()获取。 7,操作字节数组ByteArrayInputStream与ByteArrayOutputStream 这两个流中的子类对象,并没有调用底层资源。所以关闭方法close是无效的。 数据源和数据目的都是内存。 操作字节数组中的元素只要通过指针的偏移即可,为什么还要封装这样两个对象呢? 其实是:通过流的读写思想完成了数组操作。 ByteArrayInputStream bis = new ByteArrayInputStream("abc".getBytes()); ByteArrayOutputStream bos = new ByteArrayOutputStream(); int len = 0; while((len=bis.read())!=-1) { bos.write(len); } String s = bos.toString(); byte[] arr = bos.toByteArray(); bos.writeTo(new FileOutputStream("a.txt")); 操作字符数组CharArrayReader与CharArrayWrite 操作字符串StringReader 与 StringWriter 原理和ByteArrayInputStream ByteArrayOutputStream相同。 --------------------------------- 字符编码: ASCII: ISO8859-1. GB2312,GBK。 UTF-8. 在流对文本数据操作,为了方便提供了转换流,转换流中就融入了编码表,默认是GBK. OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("a.txt"),"UTF-8"); osw.write("你好"); osw.close(); 将"你好"字符查了UTF-8的码表,并将码表中对应的数字写入到硬盘上。字节数是6。 InputStreamReader isr = new InputStreamReader(new FileInputStream("a.txt"),"gbk"); char[] buf = new char[10]; int len = isr.read(buf); System.out.println(new String(buf,0,len));// 浣乱码。 isr.close(); 为什么出现乱码呢?读到的数据一共有6个字节,如果是查GBK码表,该码表是一个中文两个字节。 所以读两个字节就查询GBK表,找了一个对应的文件浣,但是并不是和元数据相符。所以称为乱码。 所以要解决该问题。必须将gbk该成UTF-8。
发表评论
-
动态代理+注解实现用户权限控制
2012-12-23 00:01 1363首先第一步我们需要定义一个接口UserDao p ... -
JDK动态代理模式
2012-12-22 21:51 900package cn.dhcool.dynamic.proxy ... -
代理proxy模式
2012-12-22 20:45 0静态代理模式: 需要有一个公共的借口,还有一个真实的实现类, ... -
工厂模式下出现的问题-null异常
2012-12-15 18:31 922遇到了一个问题: public class Dao ... -
内部类详解
2011-12-09 21:23 666从Java1.1开始引入了内部类以来,它就引起了人们的激烈争论 ... -
动态代理实现
2011-11-22 02:03 1048package com.dhcool.proxy; ... -
内省总结
2011-11-19 02:43 843package com.dhcool.introspec ... -
线程锁
2011-10-10 13:27 822sleep(), wait(),yield(),这3个方法,s ... -
类似百度谷歌分页算法实现
2011-09-08 15:58 1596<%@ page language="j ... -
充当服务端代码
2011-08-05 16:53 676import java.net.*; import java ... -
获取文件中邮件的示例
2011-08-05 12:25 737import java.util.regex.*; impo ... -
正则表达式常用字符
2011-08-05 12:22 920构造 匹配 字符 x 字符 x ... -
正则表达式
2011-08-05 12:16 847第一种:1.定义匹配规则如:String qqreg = &q ... -
InetAddress
2011-08-04 21:59 905import java.net.*; class Inet ... -
B/S socket
2011-08-04 21:08 1030import java.net.*; import java ... -
TCP多线程文件上传
2011-08-04 14:51 898/* 上传图片 */ import java.io.*; ... -
网络编程基础
2011-08-04 14:25 838网络编程: 网络通讯中所需要了解的一些内容。 T ... -
一道题
2011-08-02 21:05 614/* 有五个学生,每个学生有3门课的成绩,从键盘输入以上数据 ... -
TCP
2011-08-02 20:46 781import java.net.*; import ja ... -
UDP
2011-08-02 20:35 864import java.net.*; import java ...
相关推荐
Java IO(Input/Output)是Java平台中处理输入与输出数据的核心部分,它提供了丰富的类库,使得开发者能够高效地进行文件、网络、内存以及其他I/O流的操作。本篇文章将全面解析Java IO工具类,帮助你理解并掌握其在...
本文将通过分析一张清晰明了的Java IO类层次图,详细介绍Java IO体系中的主要类及其关系。 #### 二、Java IO 类层次结构详解 ##### 2.1 字节流类层次结构 Java IO中的字节流类主要分为两大类:`InputStream`和`...
本篇将深入探讨Java IO中的核心类、流的概念、缓冲区技术以及NIO(New IO)框架。 1. **核心IO类** - `InputStream` 和 `OutputStream` 是所有字节流的基类,分别代表输入和输出。它们提供了读写单个字节的基本...
项目工程中用到jdk1.6相关方法,可以使用,但是升级到jdk1.8以后,编译出现java.lang.NoClassDefFoundError: sun/io/CharToByteConverter错误,后经查询,是jdk1.8版本中已经从sun.io.*中进行去除。网上找来了相关...
Java 中的 IO 流是指在 Java 语言中对输入输出操作的抽象,主要用于实现程序与外部设备和其他计算机之间的交流,尤其是对磁盘文件的操作。IO 流的概念是在 1984 年由 C 语言第一次引入的,后来被 Java 语言所采用。 ...
这里我们将深入探讨同步IO、异步IO、阻塞IO和非阻塞IO的概念,理解它们的工作原理以及在实际应用中的差异。 1. 同步IO与异步IO: - **同步IO**:在同步模式下,应用程序执行I/O操作时会等待操作完成。这意味着程序...
在Java编程语言中,`java.io.File`类是处理文件和目录的核心类。...在实际项目中,结合`File`类和其他IO流类,开发者可以实现各种复杂的文件操作。对于初学者来说,理解和掌握`File`类的使用是学习Java IO的基础。
在《Survivor.IO》的源码中,我们可能会发现以下关键知识点: 1. **游戏循环(Game Loop)**:游戏的核心循环,负责处理输入、更新游戏状态和渲染画面。 2. **对象状态管理**:角色、敌人和其他游戏对象的状态变化...
在这个版本中,本地运行Hadoop时,可能会遇到与`winutils.exe`、`NativeIO`类以及`libwinutils.lib`相关的依赖问题。这些组件在Windows环境下尤其关键,因为Hadoop主要设计在Linux上,但在Windows上运行时需要额外的...
8. 零拷贝:`ByteStreams` 类中的`copy()` 方法利用NIO实现零拷贝,提高文件传输效率。 三、使用示例 例如,要复制一个文件,使用`commons-io`库可以这样编写代码: ```java import org.apache.commons.io....
除了 File 类,Java IO 包中还有许多其他类,例如: * `InputStream`:抽象类,表示输入流 * `OutputStream`:抽象类,表示输出流 * `Reader`:抽象类,表示字符输入流 * `Writer`:抽象类,表示字符输出流 * `...
在Java编程语言中,`java.io`包是处理输入输出操作的核心部分,它包含了大量用于读写数据的类。...在实际项目中,根据需求,还可以结合其他类如 `FileReader/Writer`、`Scanner` 等进行更复杂的输入输出处理。
该类中的`getChannel`方法用于获取文件通道,只有在被显式调用时才会建立;`close`方法确保资源得到妥善释放,并考虑到了线程安全问题。`FileInputStream`中包含的文件描述符主要用于实现流的共享。 - **`...
Java中的IO流是Java平台核心特性之一,它用于在各种数据源之间传输数据,包括文件、设备、网络连接等。IO流分为输入流(Input Stream)和输出流(Output Stream),按照处理的数据类型又可以分为字节流和字符流。本...
概述在进行FPGA硬件设计时,引脚分配是非常重要的一个环节,特别是在...从引脚类型上分,可以分为三大类:类是普通的IO,其中又分为程序设计中使用到的IO和程序设计中没有使用的IO(即在ucf或者XDC文件中没有进行约束
在Java编程语言中,IO(Input/Output)流是一组用于数据传输的类,它们允许程序读取和写入数据,无论是从磁盘、网络还是其他输入输出设备。Java的IO流系统是一个强大的工具,它提供了一种统一的方式来处理不同类型的...
Java调用IO流是进行数据输入输出操作的核心技术之一...在实际项目中,根据需求,可能还需要结合其他IO类,如`FileWriter`、`PrintWriter`等,以及更高级的流处理框架,如NIO(New IO)或NIO.2,来实现更复杂的IO操作。
例如,我们可以在`Athlete`类中添加属性如姓名、参赛项目、成绩等,同时提供对应的方法来获取和设置这些属性。 4. **集合操作**:在处理大量运动员数据时,集合框架的作用尤为突出。我们可以使用ArrayList来动态...
在Hadoop中,`NativeIO`类的作用至关重要,因为它使得Hadoop能更好地利用操作系统特性,提高性能和效率。例如,对于HDFS中的文件操作,直接使用本地系统调用可能比通过Java API更高效。在Windows环境下,`NativeIO$...
Java中的IO流是Java核心库的重要组成部分,它用于在不同数据源之间传输数据。Java IO流分为两大类:字符流(Character Stream)和字节流(Byte Stream)。字符流处理单个字符,而字节流处理8位的字节序列。它们又...