- 浏览: 140606 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
aa87963014:
很好,但是update/insert 是否加锁 。加锁对sel ...
数据库锁 -
RobustTm:
我的这种做法也可以添加A和B
但是换成更新就有问题
hibernate入门(十一):级联操作inversin属性 -
RobustTm:
这位仁兄可以提供一对多双向关联完整的代码不?
我碰到了问题,采 ...
hibernate入门(十一):级联操作inversin属性 -
cfeers:
markxing 写道谢谢分享。。。
不客气,呵呵。
struts2.0 struts.xml配置文件详解 -
markxing:
谢谢分享。。。
struts2.0 struts.xml配置文件详解
自己摘录的,难免有错,请见谅!
【第八章 流】
1.Java 流式输入/输出原理:
在Java程序中,对于数据的输入/输出操作以"流"(stream)方式进行;
J2SDK提供了各种各样的"流"类,用以获取不同种类的数据;程序中
通过标准的方法输入或输出数据。
输入/输出流的分类:
java.io 包中定义了多个流类型(类或抽象类)来实现输入/输出功能;
可以从不同的角度对其进行分类:
按数据流的*方向*不同可以分为【输入流】和【输出流】
按处理数据*单位*不同可以分为【字节流】和【字符流】
按照*功能*不同可以分为【节点流】和【处理流】
J2 SDK 所提供的所有流类型位于包Java.io内都分别继承自以下四种抽象流类型.
*******************************************
字节流 字符流 *
输入流 InputStream Reader *
输出流 Output Writer *
*******************************************
【节点流和处理流】
[节点流]为可以从一个特定的数据源(节点)读写数据(如:文件,内存)
[处理流]是"连接"在已存在的流(节点流或处理流)之上,通过对数据的
处理为程序提供更为强大的读写功能。
InputStream:继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8 bit)
OutputStream:继承自OutputStream的流是用于程序中输出数据,且数据的单位为字节(8 bit)
Reader:继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16 bit)
Writer:继承自Reader的流都是用于向程序中输出数据,且数据的单位为字符(16 bit)
***************************************************************************************************
【节点流的类型:】这根管道直接读到数据源
***************************************************************************************************
类型 字符流(中文也可以读取) 字节流
File(文件) FileReader FileWriter FileInputStream FileOutputStream
Memory Array CharArrayReader CharArrayWriter ByteArrayInputStream ByteArrayOutputStream
Memory String StringReader StringWriter
Pipe(管道) PipedReader PopedWriter PipedInputStream PipedOutputStream
例如:
----------------------------------------读取字符流文件-----------------------------------------
import java.io.*;
public class TestFileReader{
public static void main(String[] args){
FileReader fr = null;
int c = 0;
try{
fr = new FileReader("D:/lianxi/io/TestFileInputStream.java");
int ln = 0;
while ((c=fr.read())!=-1){
System.out.print((char)c);
}
fr.close();
}catch(FileNotFoundException e){
System.out.println("找不到指定文件");
}catch(IOException e){
System.out.println("文件读取错误");
}
}
}
---------------------------------------复制字节流文件-------------------------------------------------
import java.io.*;
public class TestFileOutputStream{
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
FileOutputStream out = null;
try{
in = new FileInputStream("D:\\lianxi\\Collection\\BasicGeneric.java");
out = new FileOutputStream("D:\\lianxi\\io\\BG.java");
while((b=in.read())!= -1){
out.write(b);
}
in.close();
out.close();
}catch (FileNotFoundException e2){
System.out.println("找不到指定文件");System.exit(-1);
}catch (IOException e1){
System.out.println("文件复制错误");System.exit(-1);
}
System.out.println("文件已复制");
}
}
--------------------------------------------读取字节流--------------------------------------------
import java.io.*;
public class TestFileInputStream{
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
try{
in = new FileInputStream("D:/lianxi/io/TestFileInputStream.java");
}catch(FileNotFoundException e){
System.out.println("找不到指定文件");
System.exit(-1);
}
try{
long num = 0;
while((b=in.read())!=-1){
System.out.print((char)b);
num++;
}
in.close();
System.out.println();
System.out.println("共读取了"+num+"个字节");
}catch(IOException e1){
System.out.println("文件读取错误");
System.exit(-1);
}
}
}
***************************************************************************************************
【处理流的类型:】这根管道包了另外一个管道
***************************************************************************************************
缓冲流:缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新方法。
import java.io.*;
public class TestBuffered{
public static void main(String[] args){
try{
BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\lianxi\\io\\dat2.txt"));
BufferedReader br = new BufferedReader(new FileReader("d:\\lianxi\\io\\dat2.txt"));
String s = null;
for(int i=1;i<=100;i++){
s = String.valueOf(Math.random());
bw.write(s);
bw.newLine();
}
bw.flush();
while((s=br.readLine())!=null){
System.out.println(s);
}
bw.close();
br.close();
} catch(IOException e){
e.printStackTrace();
}
}
}
---------------------------------------------------------------------------------------------------
***************************************************************************************************
【转换流的类型:】
***************************************************************************************************
InputStreamReader和OutputStreamWriter 用与字节数据到字符数据之间的转换。
InputStreamReader 需要和 InputStream "套接"。
OutputStreamWriter需要和 OutputStream "套接"。
---------------------------------------------------------------------------------------------------
import java.io.*;
public class TestTransForm1{
public static void main(String[] args){
try{
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream("d:\\lianxi\\io\\char.txt"));
osw.write("Mirosofttibnmsunappe8");
System.out.println(osw.getEncoding());
osw.close();
osw = new OutputStreamWriter(new FileOutputStream("d:\\lianxi\\io\\char.txt",true),"ISO8859_1");
osw.write("Mirosofttibnmsunappe0");
System.out.println(osw.getEncoding());
osw.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
---------------------------------------------------------------------------------------------------
import java.io.*;
public class TestTransForm2{
public static void main(String[] args){
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String s = null;
try{
s = br.readLine();
while(s!=null){
if(s.equalsIgnoreCase("exit")) break;
System.out.println(s.toUpperCase());
System.out.println(s.toLowerCase());
s = br.readLine();
}
br.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
***************************************************************************************************
【数据流的类型:】
***************************************************************************************************
数据流:DataInputStream 和 DataOutputStream 分别继承自InputStream和OutputStream
它属于处理流,需要分别"套接"在InputStream和OutputStream类型的节点流上
---------------------------------------------------------------------------------------------------
import java.io.*;
public class TestDataOutputStream{
public static void main(String[] args){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
try{
dos.writeDouble(Math.random());
dos.writeBoolean(true);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
System.out.println(bais.available());
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readDouble());
System.out.println(dis.readBoolean());
dos.close(); dis.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
***************************************************************************************************
【打印Print流的类型:】
***************************************************************************************************
Print 流:PrintWriter 和 PrintStream 都属于输出流,分别针对于字符和字节。提供了重载的print!
Print 流不会抛异常!
---------------------------------------------------------------------------------------------------
import java.io.*;
public class TestPrint{
public static void main(String[] args){
PrintStream ps = null;
try{
FileOutputStream fos = new FileOutputStream("D:\\lianxi\\io\\log.dat");
ps = new PrintStream(fos);
}catch(IOException e){
e.printStackTrace();
}
if(ps != null){
System.setOut(ps);
}
int ln = 0;
for(char c = 0; c <= 60000; c++){
System.out.print(c+" ");
if(ln++>=100){
System.out.println();
ln = 0;
}
}
}
}
import java.io.*;
import java.util.*;
public class TestPrintStream{
public static void main(String[] args){
String s = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try{
FileWriter fw = new FileWriter("D:\\lianxi\\io\\logfile.log",true);
PrintWriter log = new PrintWriter(fw);
while((s = br.readLine())!= null){
if(s.equalsIgnoreCase("exit")) break;
System.out.println(s.toUpperCase());
log.println("---------");
log.println(s.toUpperCase());
log.flush();
}
log.println("==="+ new Date()+"===");
log.flush();
log.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
***************************************************************************************************
【Object流的类型:】
***************************************************************************************************
Object流:直接将Object写入或读出。
transient 关键字 修饰成员变量,在修饰序列化时不予考虑,打印0
Serializable 接口 如果想把某个类的对象序列化,必须实现Serializable 接口
Externalizable 接口
public interface Externalizableextends Serializable
void readExternal(ObjectInput in)
void writeExternal(ObjectOutput out)
自己控制序列化过程
---------------------------------------------------------------------------------------------------
发表评论
-
电信系统架构方案(转自CSDN)
2011-03-03 19:51 831电信系统架构方案(转自CSDN) 撰文/青润(本文来自《程 ... -
抽象类 Abstract class
2010-09-11 17:08 797抽象类表示抽象概念, ... -
面向对象之封装
2010-09-11 17:05 828隐藏复杂性,是我们人 ... -
Java的内存管理机制
2010-09-11 16:59 930一般分成四块 Heap,stack,data segment ... -
继承的一个例子
2010-09-11 16:58 717abstract class Person{ pri ... -
java 构造方法
2010-09-11 16:54 943构造方法是一种特殊的方法,与一般的方法不同是: 1.构造方法 ... -
java 继承和接口
2010-09-11 16:52 740如果父类是抽象类,并且有抽象方法,那么子类必须重写父类的抽象方 ... -
java的异常学习
2010-09-11 16:50 711java异常学习 Java把异常 ... -
throw和throws的区别
2010-09-11 16:50 850【下面给个例子】======================= ... -
java的基本语法(七)
2010-09-11 16:49 741第十章 网络编程 1. 参考模型: ... -
java的基本语法(六)
2010-09-11 16:47 962线程的一些笔记,入门。 ... -
java的基本语法(四)
2010-09-11 16:45 624自己记得一些笔记: ... -
java的基本语法(三)
2010-09-11 16:44 823一些java里面的常用类。 ... -
java的基本语法(二)
2010-09-11 16:42 672自学java语法时的一些笔记, 数组 :是个引用类型, ... -
java的基本语法(一)
2010-09-11 16:36 877下面这些是我自学JAVA的时候摘录的一些笔记,给大家参考一下。 ...
相关推荐
Java基本语法大全
二、Java基本语法 1. **变量**:Java中的变量必须先声明后使用,有八种基本数据类型(byte, short, int, long, float, double, char, boolean)和引用数据类型(对象、数组、接口)。 2. **数据类型转换**:Java支持...
Java 基本语法编程练习 Java 是一种广泛使用的高级编程语言,具有平台独立性、对象oriented 和大规模的标准库等特点。Java 基本语法编程练习是学习 Java 语言的基础,以下是 Java 基本语法编程练习的知识点总结: ...
Java基本语法
JAVA的基本语法及48个关键字! chm文档! 找了好久都找不到,只好自己做一个了! 分享一下...
java基本语法大全 非常好用,详细地介绍了java语法特点,还有丰富的实例
Java基本语法.ppt 让读者对数据类型、表达式等Java基本语法内容有一个了解,这些内容是任何一门程序设计语言都必须包含的部分,可为程序设计打基础
根据给定文件的信息,我们可以深入探讨Java的基本语法和核心概念,包括程序结构、注释、...以上知识点覆盖了Java基本语法的核心要素,包括程序结构、注释、数据类型以及变量和常量的使用,为初学者提供了坚实的基础。
JAVA语法大全(基本语法) JAVA语法大全是指JAVA的基本语法,包括关键字、词法规则、数据类型、常量与变量、运算符和表达式、语句、数组和字符串等方面的知识点。 一、词法规则 词法规则是JAVA程序的基本组成部分...
JavaSE阶段,基本语法部分的思维导图,学习Java对于新人来说本来就比较难,我在这里自己把基本语法部分的知识点都进行了一个串联,做成了一个思维导图,可供初学者以及备考学生进行参考
这篇总结将深入探讨Java的基础语法,帮助初学者理解并掌握Java编程的核心概念。 **1. Java程序结构** Java程序由类(Class)组成,每个类都包含方法(Method)。程序执行始于main方法。例如: ```java public class...
Java的基本语法的笔记
本_experiment_总结了 Java 的一些基本的语法知识,包括变量和常量的使用、运算符与表达式的使用、选择、循环、分支语句的使用等。实验内容包括输入一个学生的成绩,给出相应的等级、编写一个程序从键盘输入 5 个...
Java 基本语法 Java 程序设计的基本语法是学习 Java 的基础,这部分内容涵盖了 Java 的变量、常量、运算符、控制语句等基础知识。 一、变量 在 Java 中,变量是存储数据的一个基本单元房间,变量名是房间的名字,...
### Java基础语法汇总 本文将基于给定的文件信息,对Java的基础语法进行一次全面而深入的解析。Java作为一种广泛使用的编程语言,在软件开发、Web应用、移动应用等多个领域都有着重要的地位。对于初学者而言,掌握...
01.Java基本语法
以下是Java基本语法的一些核心知识点: 1. **数据类型**:Java有两大类数据类型,即基本数据类型和引用数据类型。基本数据类型包括整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔...
总的来说,Java基本语法的学习对于初学者来说至关重要,因为它提供了编写Java程序的基础。理解这些概念后,开发者能够创建简单的程序,并逐渐进阶到更复杂的面向对象编程。通过不断的实践和学习,可以掌握Java编程的...
本人属于初学者,通过老师的讲解,做出来的自身对JAVA基本语法的理解