- 浏览: 14664 次
- 性别:
- 来自: 上海
最新评论
Java IO 技术之基本流类
- 博客分类:
- 技术杂绘
Java IO 技术之基本流类
2011年03月08日
转自http://www.blogjava.net/coderdream/articles/65609. html 很好的一篇文章,谢谢作者
流式IO
流(Stream)是字节的源或目的。
两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。
流的分类
节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。
过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。
InputStream
三个基本的读方法
abstract int read() :读取一个字节数据,并返回读到的数据,如果返回-1,表示读到了输入流的末尾。
int read(byte[] b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。
int read(byte[] b, int off, int len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置;len指定读取的最大字节数。
其它方法
long skip(long n) :在输入流中跳过n个字节,并返回实际跳过的字节数。
int available() :返回在不发生阻塞的情况下,可读取的字节数。
void close() :关闭输入流,释放和这个流相关的系统资源。
void mark(int readlimit) :在输入流的当前位置放置一个标记,如果读取的字节数多于readlimit设置的值,则流忽略这个标记。
void reset() :返回到上一个标记。
boolean markSupported() :测试当前流是否支持mark和reset方法。如果支持,返回true,否则返回false。
java.io包中 InputStream的类层次
OutputStream
三个基本的写方法
abstract void write(int b) :往输出流中写入一个字节。
void write(byte[] b) :往输出流中写入数组b中的所有字节。
void write(byte[] b, int off, int len) :往输出流中写入数组b中从偏移量off开始的len个字节的数据。
其它方法
void flush() :刷新输出流,强制缓冲区中的输出字节被写出。
void close() :关闭输出流,释放和这个流相关的系统资源。
java.io包中 OutputStream的类层次
-------------------------------------------------- -----------------------------
-------------------------------------------------- -----------------------------
Demo1:在控制台读取键盘输入,然后显示。Ctrl+C结束运行
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
int data;
7
8
while ((data = System.in.read()) != -1) {
9
System.out.write(data);
10
}
11
12
}
13
14
}
15
-------------------------------------------------- -----------------------------
-------------------------------------------------- ----------------------------- 基本的流类
1、FileInputStream和FileOutputStream
节点流,用于从文件中读取或往文件中写入字节流。如果在构造FileOutputStream时,文件已经存在,则覆盖这个文件。
-------------------------------------------------- -----------------------------
Demo2:将字符串写入特定文件,注意write方法只接收字符数组。
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
FileOutputStream fos = new FileOutputStream("1.txt");
7
8
/*
9
* 注意:FileOutputStream的write方法接收字符数组,不能接收String字符串,
10
* 所以要用String的getBytes方法生成一个字符数组
11
*/
12
fos.write("http://www.cnblogs.com".getBytes());
13
fos.close();
14
15
}
16
17
}
-------------------------------------------------- -----------------------------
-------------------------------------------------- -----------------------------
String的构造方法的API:
------------
Java API:
------------
String
public String(byte[] bytes,
int offset,
int length)
构造一个新的 String,方法是使用指定的字符集解码字节的指定子数组。新的 String 的长度是一个字符集函数,因此不能等于该子数组的长度。
当给定字节在给定字符集中无效的情况下,该构造方法无指定的行为。当需要进一步控制解码过程时,应使用 CharsetDecoder 类。
参数:
bytes - 要解码为字符的字节
offset - 要解码的首字节的索引
length - 要解码的字节数
抛出:
IndexOutOfBoundsException - 如果 offset 和 length 参数索引字符超出 bytes 数组的范围
从以下版本开始:
JDK1.1
-------------------------------------------------- -----------------------------
-------------------------------------------------- -----------------------------
Demo3:将字符串写入特定文件,注意write方法只接收字符数组。
然后通过文件输出流读取数据,注意使用String特定的构造方法。
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
FileOutputStream fos = new FileOutputStream("1.txt");
7
8
/*
9
* 注意:FileOutputStream的write方法接收字符数组,不能接收String字符串,
10
* 所以要用String的getBytes方法生成一个字符数组
11
*/
12
fos.write("http://www.cnblogs.com".getBytes());
13
fos.close();
14
15
// 使用String的这个构造方法:
16
// String(byte[] bytes, int offset, int length)
17
18
FileInputStream fis = new FileInputStream("1.txt");
19
byte[] buf = new byte[100];
20
int len = fis.read(buf);
21
22
// 使用String的这个构造方法:
23
// String(byte[] bytes, int offset, int length)
24
System.out.println(new String(buf, 0, len));
25
fis.close(); // 使用完后记得关闭文件流
26
27
}
28
29
}
30
31
-------------------------------------------------- -----------------------------
运行结果:http://www.cnblogs.com
-------------------------------------------------- -----------------------------
2、BufferedInputStream和BufferedOutputStream
过滤流,需要使用已经存在的节点流来构造,提供带缓冲的读写,提高了读写的效率。
------------
Java API:
------------
构造方法摘要
BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的基础输出流。
BufferedOutputStream(OutputStream out, int size)
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的基础输出流。
-------------------------------------------------- -----------------------------
BufferedOutputStream
public BufferedOutputStream(OutputStream out)
创建一个新的缓冲输出流,以将数据写入指定的基础输出流。
参数:
out - 基础输出流。
BufferedOutputStream
public BufferedOutputStream(OutputStream out,
int size)
创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的基础输出流。
参数:
out - 基础输出流。
size - 缓冲区的大小。
抛出:
IllegalArgumentException - 如果 size
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
7
FileOutputStream fos = new FileOutputStream("1.txt");
8
BufferedOutputStream bos = new BufferedOutputStream(fos);
9
bos.write("http://www.cnblogs.com".getBytes());
10
}
11
12
}
-------------------------------------------------- -----------------------------
运行结果:1.txt文件为空。原因:缓冲区没有写满,程序没有向文件写数据。
-------------------------------------------------- -----------------------------
-------------------------------------------------- -----------------------------
解决方法1:使用flush()方法:
-------------------------------------------------- -----------------------------
Demo4:使用flush()方法,可以使程序立即向文件写数据。
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
7
FileOutputStream fos = new FileOutputStream("1.txt");
8
BufferedOutputStream bos = new BufferedOutputStream(fos);
9
bos.write("http://www.cnblogs.com".getBytes());
10
11
bos.flush();
12
}
13
14
}
-------------------------------------------------- -----------------------------
运行结果:数据被写入相应的文件。
-------------------------------------------------- -----------------------------
解决方法2:使用close()方法:
-------------------------------------------------- -----------------------------
Demo5:使用close()方法,同样可以使程序立即向文件写数据。
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
7
FileOutputStream fos = new FileOutputStream("1.txt");
8
BufferedOutputStream bos = new BufferedOutputStream(fos);
9
bos.write("http://www.cnblogs.com".getBytes());
10
11
bos.close();
12
}
13
14
}
-------------------------------------------------- -----------------------------
运行结果:数据被写入相应的文件。
-------------------------------------------------- -----------------------------
flush()和close()的区别:
还要使用流对象,还需要写数据,使用flush(),否则使用close()。
另外,使用close()将关闭自己的流对象,同时会关闭与之相关的流对象,如FileOutputStream流。
-------------------------------------------------- -----------------------------
Demo6:使用BufferedInputStream流,从文件中读取数据。
同样要用InputStream流对象或者其子类的对象来构造。
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
7
FileOutputStream fos = new FileOutputStream("1.txt");
8
BufferedOutputStream bos = new BufferedOutputStream(fos);
9
bos.write("http://www.cnblogs.com".getBytes());
10
11
bos.close();
12
13
FileInputStream fis = new FileInputStream("1.txt");
14
BufferedInputStream bis = new BufferedInputStream(fis);
15
byte[] buf = new byte[100];
16
int len = bis.read(buf);
17
18
// 使用String的这个构造方法:
19
// String(byte[] bytes, int offset, int length)
20
System.out.println(new String(buf, 0, len));
21
bis.close();
22
}
23
24
}
-------------------------------------------------- -----------------------------
运行结果:输出http://www.cnblogs.com
-------------------------------------------------- -----------------------------
3、DataInputStream和DataOutputStream
过滤流,需要使用已经存在的节点流来构造,提供了读写Java中的基本数据类型 的功能。
------------
Java API:
------------
java.io
类 DataOutputStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
java.io.DataOutputStream
所有已实现的接口:
Closeable, DataOutput, Flushable
public class DataOutputStream
extends FilterOutputStream
implements DataOutput
数据输出流允许应用程序以适当方式将基本 Java 数据类型写入输出流中。然后,应用程序可以使用数据输入流将数据读入。
从以下版本开始:
JDK1.0
-------------------------------------------------- -----------------------------
构造方法摘要
DataOutputStream(OutputStream out)
创建一个新的数据输出流,将数据写入指定基础输出流。
-------------------------------------------------- -----------------------------
DataOutputStream
public DataOutputStream(OutputStream out)
创建一个新的数据输出流,将数据写入指定基础输出流。计数器 written 被设置为零。
参数:
out - 基础输出流,将被保存供以后使用。
-------------------------------------------------- -----------------------------
Demo7:使用DataOutputStream流,将基本数据类型以二进制形式写入文件中。
同样要用InputStream流对象或者其子类的对象来构造,
这里使用BufferedOutputStream对象来构造。
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
7
FileOutputStream fos = new FileOutputStream("dos.txt"); // 获得写入文件功能
8
BufferedOutputStream bos = new BufferedOutputStream(fos); // 获得缓冲功能
9
DataOutputStream dos = new DataOutputStream(bos); // 获得写入基本类型功能
10
11
/*
12
* 定义8种基本类型的对象
13
*/
14
byte b = 3;
15
short s = 4;
16
int i = 78;
17
long l = 100000;
18
char ch = 'a';
19
boolean bl = false;
20
float f = 4.5f;
21
double d = 4.0001;
22
23
/*
24
* 将8种基本类型的对象写入文件中
25
*/
26
dos.writeByte(b);
27
dos.writeShort(s);
28
dos.writeInt(i);
29
dos.writeLong(l);
30
dos.writeChar(ch);
31
dos.writeBoolean(bl);
32
dos.writeFloat(f);
33
dos.writeDouble(d);
34
dos.close();
35
}
36
37
}
-------------------------------------------------- -----------------------------
运行结果:8种基本类型的数据以二进制形式写入指定的文件中。
-------------------------------------------------- -----------------------------
-------------------------------------------------- -----------------------------
Demo8:从指定的文件中读取8种基本类型的数据
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class StreamDemo {
4
5
public static void main(String[] args) throws Exception {
6
7
FileOutputStream fos = new FileOutputStream("dos.txt"); // 获得写入文件功能
8
BufferedOutputStream bos = new BufferedOutputStream(fos); // 获得缓冲功能
9
DataOutputStream dos = new DataOutputStream(bos); // 获得写入基本类型功能
10
11
/*
12
* 定义8种基本类型的对象
13
*/
14
byte b = 3;
15
short s = 4;
16
int i = 78;
17
long l = 100000;
18
char ch = 'a';
19
boolean bl = false;
20
float f = 4.5f;
21
double d = 4.0001;
22
23
/*
24
* 将8种基本类型的对象写入文件中
25
*/
26
dos.writeByte(b);
27
dos.writeShort(s);
28
dos.writeInt(i);
29
dos.writeLong(l);
30
dos.writeChar(ch);
31
dos.writeBoolean(bl);
32
dos.writeFloat(f);
33
dos.writeDouble(d);
34
dos.close();
35
36
FileInputStream fis = new FileInputStream("dos.txt");
37
BufferedInputStream bis = new BufferedInputStream(fis);
38
DataInputStream dis = new DataInputStream(bis);
39
System.out.println(dis.readByte());
40
System.out.println(dis.readShort());
41
System.out.println(dis.readInt());
42
System.out.println(dis.readLong());
43
System.out.println(dis.readChar());
44
System.out.println(dis.readBoolean());
45
System.out.println(dis.readFloat());
46
System.out.println(dis.readDouble());
47
dis.close();
48
}
49
50
}
-------------------------------------------------- -----------------------------
运行结果:数据正常输出:
3
4
78
100000
a
false
4.5
4.0001
-------------------------------------------------- -----------------------------
4、PipedInputStream和PipedOutputStream
管道流,用于线程间的通信。一个线程的PipedInputStream对象从另一个线程的PipedOutputStream对象读取输入。要使管道流有用,必须同时构造管道输入流和管道输出流 。
-------------------------------------------------- -----------------------------
------------
Java API:
------------
java.io
类 PipedInputStream
java.lang.Object
java.io.InputStream
java.io.PipedInputStream
所有已实现的接口:
Closeable
public class PipedInputStream
extends InputStream
传送输入流应该连接到传送输出流;传送输入流会提供要写入传送输出流的所有数据字节。通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能会死锁该线程。传送输入流包含一个缓冲区,可在缓冲区限定的范围 内将读操作和写操作分离开。
从以下版本开始:
JDK1.0
-------------------------------------------------- -----------------------------
------------
Java API:
------------
java.io
类 PipedOutputStream
java.lang.Object
java.io.OutputStream
java.io.PipedOutputStream
所有已实现的接口:
Closeable, Flushable
public class PipedOutputStream
extends OutputStream
传送输出流可以连接到传送输入流,以创建通信管道。传送输出流是管道的发送端。通常,数据由某个线程写入 PipedOutputStream 对象,并由其他线程从连接的 PipedInputStream 读取。不建议对这两个对象尝试使用单个线程,因为这样可能会死锁该线程。
从以下版本开始:
JDK1.0
-------------------------------------------------- -----------------------------
------------
Java API:
------------
connect
public void connect(PipedInputStream snk)
throws IOException
将此传送输出流连接到接收者。如果此对象已经连接到其他某个传送输入流,则抛出 IOException。
如果 snk 为未连接的传送输入流,而 src 为未连接的传送输出流,则可以通过以下任一调用使其连接:
src.connect(snk)
或:
snk.connect(src)
这两个调用的效果相同。
参数:
snk - 要连接的传送输入流。
抛出:
IOException - 如果发生 I/O 错误。
-------------------------------------------------- -----------------------------
-------------------------------------------------- -----------------------------
-------------------------------------------------- -----------------------------
Demo9:利用管道输入流和输出流进行通讯。
-------------------------------------------------- ----------------------------- 1
import java.io.*;
2
3
public class PipedStreamDemo {
4
5
public static void main(String[] args) {
6
PipedOutputStream pos = new PipedOutputStream();
7
PipedInputStream pis = new PipedInputStream();
8
9
try {
10
pos.connect(pis);
11
//pis.connect(pos); 二选一即可
12
13
new Producer(pos).start();
14
new Consumer(pis).start();
15
} catch (IOException e) {
16
// TODO 自动生成 catch 块
17
e.printStackTrace();
18
}
19
}
20
21
}
22
23
/*
24
* 生产者线程
25
*/
26
class Producer extends Thread {
27
28
private PipedOutputStream pos;
29
30
public Producer(PipedOutputStream pos) {
31
this.pos = pos;
32
}
33
34
public void run() {
35
try {
36
pos.write("Hello, welcome you!".getBytes());
37
pos.close();
38
} catch (Exception e) {
39
e.printStackTrace();
40
}
41
}
42
43
}
44
45
/*
46
* 消费者线程
47
*/
48
class Consumer extends Thread {
49
50
private PipedInputStream pis;
51
52
public Consumer(PipedInputStream pis) {
53
this.pis = pis;
54
}
55
56
public void run() {
57
try {
58
byte[] buf = new byte[100];
59
int len = pis.read(buf);
60
System.out.println(new String(buf, 0, len));
61
pis.close(); // 关闭输入流
62
} catch (Exception e) {
63
e.printStackTrace();
64
}
65
}
66
67
}
68
-------------------------------------------------- -----------------------------
运行结果:输出Hello, welcome you!
-------------------------------------------------- -----------------------------
发表评论
-
linux下编程实现mplayer播放器总结
2012-01-20 00:13 1020linux下编程实现mplayer播放器总结 2011年05 ... -
掌握 Linux 调试技术 +Debian/Ubuntu内核编程者必备
2012-01-20 00:13 688掌握 Linux 调试技术 +Debian/Ubuntu内核编 ... -
操作系统学习笔记1
2012-01-20 00:13 674操作系统学习笔记1 2010 ... -
深入理解控制台程序
2012-01-20 00:13 882深入理解控制台程序 2010年06月26日 在Delph ... -
C/C++ > UNIX系统程序设计
2012-01-19 01:05 645C/C++ > UNIX系统程序设 ... -
C段错误总结
2012-01-19 01:05 624C段错误总结 2012年01月07日 最近一段时间在li ... -
liniux学习
2012-01-19 01:05 849liniux学习 2010年06月08日 ... -
PNG文件结构(PNG图片格式)详解(转)
2012-01-19 01:04 1338PNG文件结构(PNG图片格式 ... -
delphi中opengl程序设计
2012-01-19 01:04 658delphi中opengl程序设计 2011年06月07日 ... -
BMP文件加载探讨(转http://blog.sina.com.cn/s/blog_5da62ae00100pyls.html)
2012-01-17 00:28 799BMP文件加载探讨(转http://blog.sina.com ... -
bmp保存
2012-01-17 00:28 355bmp保存 2010年10月24日 CFileDialo ... -
使用jpeglib,实现jpg和bmp互转
2012-01-17 00:27 1608使用jpeglib,实现jpg和bmp互转 2011年10月 ... -
BMP文件操作方法(一个月研究出来的)
2012-01-17 00:27 703BMP文件操作方法(一个月研究出来的) 2011年07月20 ... -
BMP位图文件的存储格式3
2012-01-17 00:27 653BMP位图文件的存储格式3 2011年06月18日 1. ... -
很久很久以前的事
2012-01-16 13:53 735很久很久以前的事 2010年08月01日 今天给自己的大 ... -
2011-9-15
2012-01-16 13:53 5092011-9-15 2011年09月15日 第 1课时 ... -
如何培养一年级学生良好的学习习惯
2012-01-16 13:53 514如何培养一年级学生良好的学习习惯 2011年06月28日 ... -
各位家长非常辛苦,其他老师也很辛苦,孩子也很辛苦。希望我们相互理解,用朋友的角度去商量让孩子变的好起来
2012-01-16 13:53 551各位家长非常辛苦,其他 ... -
日记那点破事儿
2012-01-16 13:53 329日记那点破事儿 2011年0 ...
相关推荐
4. Java中流的概念细分 流的方向: 输入流:数据源到程序(InputStream、Reader读进来) ...节点流处于io操作的第一线,所有操作必须通过他们进行;处理流可以对节点流 进行包装,提高性能或提高程序的灵活性。
javaOOP必看精华视频资料,1:主要介绍IO流中的递归 2:文件输出导出数据与文件输入导入数据的构造方法 3:递归求阶乘代码实现及内存讲解 4:不死神兔问题案例 5:IO流基类概述及一个简单的需求分析 6:...
Java基础类型,容器,并发,IO流,面向对象,Web编程等代码总结。 2、分类文档 JVM虚拟机 JVM特点,结构与执行周期 JVM类加载机制 JVM运行时区数据 JVM执行引擎和垃圾回收 基础语法 理解Java中对象基础Object类 ...
Java的I/O流(Input/Output Stream)技术是Java编程中用于处理输入和输出的重要部分。...除了基本的文件和网络I/O之外,Java的NIO(New I/O)技术也是I/O流领域的重要发展。NIO引入了通道(Channel)和缓冲
031208_【第12章:JAVA IO】_System类对IO的支持笔记.pdf 031209_【第12章:JAVA IO】_BufferedReader笔记.pdf 031210_〖第12章:JAVA IO〗_IO操作实例笔记.pdf 031211_【第12章:JAVA IO】_Scanner笔记.pdf 031212_...
关于java程序员发展需要学习的路线整理集合 技术 应用技术 计算机基础知识 cpu mem disk net 线程,进程 第三方库 poi Jsoup zxing Gson 数据结构 树 栈 链表 队列 图 操作系统 linux 代码控制...
节点流和处理流 Java IO 的核心类 File Java IO 流对象 字节流对象InputStream OutputStream 字符流对象Reader Writer 字节流与字符流的转换新潮的 NIO 缓冲区(Buffer)通道(Channel) 示例:文件拷贝案例 BIO 和 NIO ...
用于读取图像,声音,视频等数据类的原始字节流。 | |--FilterInputStream/:包含一些输入流,将这些流用作其基本数据源,可以直接传输数据或者提供额外的功能。 | |--BufferedInputStream/:输入流缓冲区。 | ...
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供...
JavaIO流 多线程 深入理解内部类 javac和javap Java8新特性终极指南 序列化和反序列化 继承封装多态的实现原理 集合类 Java集合类总结 Java集合详解:一文读懂ArrayList,Vector与Stack使用方法和实现原理 Java集合...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
6. 掌握IO流的基本用法,包括字节流和字符流的区别、文件操作等。 7. 学习网络编程的基本知识,包括Socket编程、HTTP协议等。 8. 熟悉数据库操作的基本知识,包括SQL语句的编写、JDBC的使用等。 9. 在准备面试时,...
本程序是一个简单的文字编辑器程序,它用Java 文字编辑器是图形界面、线程、流与文件等技术的综合应用,该程序的用户界面采用了awt包,基本上实现了文本编辑器的基本功能,包含新建、保存和打开文件,关闭窗口;...
基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,用于存储数据的容器。 76 < java.util > Collection接口 77 < java.util >Iterator接口 78 < java.util >List接口 78 < java.util >Set接口 80 < java....
java.io 通过数据流、序列化和文件系统提供系统输入和输出。 java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 ...
Java中IO流类的体系 149 四个IO基本抽象类 150 InputStream 150 OutputStream 150 常用InputStream和OutputStream子类用法 150 FileInputStream和FileOutputStream 150 ByteArrayInutStream和ByteArrayOutputStream ...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...