1、分为字节流和字符流;
字符流中封装的有编码表,对字符的操作很方便;
下面代码为字符流的应用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
//将C盘一个文本文件复制到D盘。
/*
复制的原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。
步骤:
1,在D盘创建一个文件。用于存储C盘文件中的数据。
2,定义读取流和C盘文件关联。
3,通过不断的读写完成数据存储。
4,关闭资源。
*/
import
java.io.*;
class
CopyText
{
public
static
void
main(
String
[] args) throws IOException
{
copy_2();
}
public
static
void
copy_2()
{
FileWriter fw =
null
;
FileReader fr =
null
;
try
{
fw =
new
FileWriter(
"SystemDemo_copy.txt"
);
fr =
new
FileReader(
"SystemDemo.java"
);
char[] buf =
new
char[
1024
];
int
len =
0
;
while
((len=fr.read(buf))!=-
1
)
{
fw.write(buf,
0
,len);
}
}
catch
(IOException e)
{
throw
new
RuntimeException(
"读写失败"
);
}
finally
{
if
(fr!=
null
)
try
{
fr.close();
}
catch
(IOException e)
{
}
if
(fw!=
null
)
try
{
fw.close();
}
catch
(IOException e)
{
}
}
}
//从C盘读一个字符,就往D盘写一个字符。
public
static
void
copy_1()throws IOException
{
//创建目的地。
FileWriter fw =
new
FileWriter(
"RuntimeDemo_copy.txt"
);
//与已有文件关联。
FileReader fr =
new
FileReader(
"RuntimeDemo.java"
);
int
ch =
0
;
while
((ch=fr.read())!=-
1
)
{
fw.write(ch);
}
fw.close();
fr.close();
}
}
|
2、下面代码为字节流实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/*
复制一个图片
思路:
1,用字节读取流对象和图片关联。
2,用字节写入流对象创建一个图片文件。用于存储获取到的图片数据。
3,通过循环读写,完成数据的存储。
4,关闭资源。
*/
import
java.io.*;
class
CopyPic
{
public
static
void
main(
String
[] args)
{
FileOutputStream fos =
null
;
FileInputStream fis =
null
;
try
{
fos =
new
FileOutputStream(
"c:\\2.bmp"
);
fis =
new
FileInputStream(
"c:\\1.bmp"
);
byte[] buf =
new
byte[
1024
];
int
len =
0
;
while
((len=fis.read(buf))!=-
1
)
{
fos.write(buf,
0
,len);
}
}
catch
(IOException e)
{
throw
new
RuntimeException(
"复制文件失败"
);
}
finally
{
try
{
if
(fis!=
null
)
fis.close();
}
catch
(IOException e)
{
throw
new
RuntimeException(
"读取关闭失败"
);
}
try
{
if
(fos!=
null
)
fos.close();
}
catch
(IOException e)
{
throw
new
RuntimeException(
"写入关闭失败"
);
}
}
}
}
|
3、字节流和字符流之间的转换
字节流转为字符流:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import
java.io.*;
class
TransStreamDemo
{
public
static
void
main(
String
[] args) throws IOException
{
//获取键盘录入对象。
//InputStream in = System.in;
//将字节流对象转成字符流对象,使用转换流。InputStreamReader
//InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader
//BufferedReader bufr = new BufferedReader(isr);
//键盘的最常见写法。
BufferedReader bufr =
new
BufferedReader(
new
InputStreamReader(System.
in
));
// OutputStream out = System.out;
// OutputStreamWriter osw = new OutputStreamWriter(out);
// BufferedWriter bufw = new BufferedWriter(osw);
BufferedWriter bufw =
new
BufferedWriter(
new
OutputStreamWriter(System.out));
String
line =
null
;
while
((line=bufr.readLine())!=
null
)
{
if
(
"over"
.equals(line))
break
;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
}
}
|
3、File类:
由于文件时数据操作的基本单位,所以将File封装为一个类;
File file=new File("sd.txt")即可;
在流中,使用流的方法创建的文件其效果与这个一样;
4、一种特殊文件,Properties文件是以键值对存储数据的;
它是HashTable的子类,具备Map的特点,是集合中和IO相结合的一个类;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
import
java.io.*;
import
java.util.*;
class
PropertiesDemo
{
public
static
void
main(
String
[] args) throws IOException
{
//method_1();
loadDemo();
}
public
static
void
loadDemo()throws IOException
{
Properties prop =
new
Properties();
FileInputStream fis =
new
FileInputStream(
"info.txt"
);
//将流中的数据加载进集合。
prop.load(fis);
prop.setProperty(
"wangwu"
,
"39"
);
FileOutputStream fos =
new
FileOutputStream(
"info.txt"
);
prop.store(fos,
"haha"
);
// System.out.println(prop);
prop.list(System.out);
fos.close();
fis.close();
}
//演示,如何将流中的数据存储到集合中。
//想要将info.txt中键值数据存到集合中进行操作。
/*
1,用一个流和info.txt文件关联。
2,读取一行数据,将该行数据用"="进行切割。
3,等号左边作为键,右边作为值。存入到Properties集合中即可。
*/
public
static
void
method_1()throws IOException
{
BufferedReader bufr =
new
BufferedReader(
new
FileReader(
"info.txt"
));
String
line =
null
;
Properties prop =
new
Properties();
while
((line=bufr.readLine())!=
null
)
{
String
[] arr = line.split(
"="
);
///System.out.println(arr[0]+"...."+arr[1]);
prop.setProperty(arr[
0
],arr[
1
]);
}
bufr.close();
System.out.println(prop);
}
// 设置和获取元素。
public
static
void
setAndGet()
{
Properties prop =
new
Properties();
prop.setProperty(
"zhangsan"
,
"30"
);
prop.setProperty(
"lisi"
,
"39"
);
// System.out.println(prop);
String
value = prop.getProperty(
"lisi"
);
//System.out.println(value);
prop.setProperty(
"lisi"
,
89
+
""
);
Set<
String
> names = prop.stringPropertyNames();
for
(
String
s : names)
{
System.out.println(s+
":"
+prop.getProperty(s));
}
}
}
|
5、其他常见IO流对象:ByteArrayStream、DataStream、RandomAccessFile、
PipedStream、PrintWrite以及IO的合并流;
其中RandomAccessFile直接继承于Object;
1、分为字节流和字符流;
字符流中封装的有编码表,对字符的操作很方便;
下面代码为字符流的应用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
//将C盘一个文本文件复制到D盘。
/*
复制的原理:
其实就是将C盘下的文件数据存储到D盘的一个文件中。
步骤:
1,在D盘创建一个文件。用于存储C盘文件中的数据。
2,定义读取流和C盘文件关联。
3,通过不断的读写完成数据存储。
4,关闭资源。
*/
import
java.io.*;
class
CopyText
{
public
static
void
main(
String
[] args) throws IOException
{
copy_2();
}
public
static
void
copy_2()
{
FileWriter fw =
null
;
FileReader fr =
null
;
try
{
fw =
new
FileWriter(
"SystemDemo_copy.txt"
);
fr =
new
FileReader(
"SystemDemo.java"
);
char[] buf =
new
char[
1024
];
int
len =
0
;
while
((len=fr.read(buf))!=-
1
)
{
fw.write(buf,
0
,len);
}
}
catch
(IOException e)
{
throw
new
RuntimeException(
"读写失败"
);
}
finally
{
if
(fr!=
null
)
try
{
fr.close();
}
catch
(IOException e)
{
}
if
(fw!=
null
)
try
{
fw.close();
}
catch
(IOException e)
{
}
}
}
//从C盘读一个字符,就往D盘写一个字符。
public
static
void
copy_1()throws IOException
{
//创建目的地。
FileWriter fw =
new
FileWriter(
"RuntimeDemo_copy.txt"
);
//与已有文件关联。
FileReader fr =
new
FileReader(
"RuntimeDemo.java"
);
int
ch =
0
;
while
((ch=fr.read())!=-
1
)
{
fw.write(ch);
}
fw.close();
fr.close();
}
}
|
2、下面代码为字节流实例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
/*
复制一个图片
思路:
1,用字节读取流对象和图片关联。
2,用字节写入流对象创建一个图片文件。用于存储获取到的图片数据。
3,通过循环读写,完成数据的存储。
4,关闭资源。
*/
import
java.io.*;
class
CopyPic
{
public
static
void
main(
String
[] args)
{
FileOutputStream fos =
null
;
FileInputStream fis =
null
;
try
{
fos =
new
FileOutputStream(
"c:\\2.bmp"
);
fis =
new
FileInputStream(
"c:\\1.bmp"
);
byte[] buf =
new
byte[
1024
];
int
len =
0
;
while
((len=fis.read(buf))!=-
1
)
{
fos.write(buf,
0
,len);
}
}
catch
(IOException e)
{
throw
new
RuntimeException(
"复制文件失败"
);
}
finally
{
try
{
if
(fis!=
null
)
fis.close();
}
catch
(IOException e)
{
throw
new
RuntimeException(
"读取关闭失败"
);
}
try
{
if
(fos!=
null
)
fos.close();
}
catch
(IOException e)
{
throw
new
RuntimeException(
"写入关闭失败"
);
}
}
}
}
|
3、字节流和字符流之间的转换
字节流转为字符流:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import
java.io.*;
class
TransStreamDemo
{
public
static
void
main(
String
[] args) throws IOException
{
//获取键盘录入对象。
//InputStream in = System.in;
//将字节流对象转成字符流对象,使用转换流。InputStreamReader
//InputStreamReader isr = new InputStreamReader(in);
//为了提高效率,将字符串进行缓冲区技术高效操作。使用BufferedReader
//BufferedReader bufr = new BufferedReader(isr);
//键盘的最常见写法。
BufferedReader bufr =
new
BufferedReader(
new
InputStreamReader(System.
in
));
// OutputStream out = System.out;
// OutputStreamWriter osw = new OutputStreamWriter(out);
// BufferedWriter bufw = new BufferedWriter(osw);
BufferedWriter bufw =
new
BufferedWriter(
new
OutputStreamWriter(System.out));
String
line =
null
;
while
((line=bufr.readLine())!=
null
)
{
if
(
"over"
.equals(line))
break
;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
}
}
|
3、File类:
由于文件时数据操作的基本单位,所以将File封装为一个类;
File file=new File("sd.txt")即可;
在流中,使用流的方法创建的文件其效果与这个一样;
4、一种特殊文件,Properties文件是以键值对存储数据的;
它是HashTable的子类,具备Map的特点,是集合中和IO相结合的一个类;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
import
java.io.*;
import
java.util.*;
class
PropertiesDemo
{
public
static
void
main(
String
[] args) throws IOException
{
//method_1();
loadDemo();
}
public
static
void
loadDemo()throws IOException
{
Properties prop =
new
Properties();
FileInputStream fis =
new
FileInputStream(
"info.txt"
);
//将流中的数据加载进集合。
prop.load(fis);
prop.setProperty(
"wangwu"
,
"39"
);
FileOutputStream fos =
new
FileOutputStream(
"info.txt"
);
prop.store(fos,
"haha"
);
// System.out.println(prop);
prop.list(System.out);
fos.close();
fis.close();
}
//演示,如何将流中的数据存储到集合中。
//想要将info.txt中键值数据存到集合中进行操作。
/*
1,用一个流和info.txt文件关联。
2,读取一行数据,将该行数据用"="进行切割。
3,等号左边作为键,右边作为值。存入到Properties集合中即可。
*/
public
static
void
method_1()throws IOException
{
BufferedReader bufr =
new
BufferedReader(
new
FileReader(
"info.txt"
));
String
line =
null
;
Properties prop =
new
Properties();
while
((line=bufr.readLine())!=
null
)
{
String
[] arr = line.split(
"="
);
///System.out.println(arr[0]+"...."+arr[1]);
prop.setProperty(arr[
0
],arr[
1
]);
}
bufr.close();
System.out.println(prop);
}
// 设置和获取元素。
public
static
void
setAndGet()
{
Properties prop =
new
Properties();
prop.setProperty(
"zhangsan"
,
"30"
);
prop.setProperty(
"lisi"
,
"39"
);
// System.out.println(prop);
String
value = prop.getProperty(
"lisi"
);
//System.out.println(value);
prop.setProperty(
"lisi"
,
89
+
""
);
Set<
String
> names = prop.stringPropertyNames();
for
(
String
s : names)
{
System.out.println(s+
":"
+prop.getProperty(s));
}
}
}
|
5、其他常见IO流对象:ByteArrayStream、DataStream、RandomAccessFile、
PipedStream、PrintWrite以及IO的合并流;
其中RandomAccessFile直接继承于Object;
本文出自 “为梦而狂” 博客,请务必保留此出处http://xzb09.blog.51cto.com/7243998/1251248