黑马程序员----JAVA----IO小结(2)
2013-02-25 00:57
387 查看
----------------------------------android培训、java培训、期待与您交流!------------------------------
字节流:
抽象基类:
InputStream
OutputStream。
字节流可以操作任何数据。
注意:
字符流使用的数组是字符数组。char[]chs
字节流使用的数组是字节数组。byte[] bys
FileOutputStream fos=newFileOutputStream(new FileOutputStream("a.txt");
fos.write("ace");//直接将数据写入到了目的地。
fos.close();//关闭资源。
FileInputStream fis=new FileInputStream("a.txt")
fis.available();//获取关联的文件的字节数。
//如果文件的体积不是很大。
//可以这样操作。
byte[] buf=new byte[fis.available()];//创建一个刚刚好的缓冲区。
//但是这有一个弊端,就是文件过大,大小超出jvm的内容空间时,会内存溢出。
fis.read(buf);
System.out.println(new String(buf));
复制一个图片:
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("1.jpg");
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("2.jpg");
int by=0;
while((by=bis.read())!=-1)
{
bos.write(by);
}
bos.close();
bis.close();
转换流:
特点:
1,是字节流和字符流之间的桥梁。
2,该流对象中可以对读取到的字节数据进行指定编码表的编码转换。
什么时候使用呢?
1,当字节和字符之间有转换动作时。
2,流操作的数据需要进行编码表的指定时。
具体的对象体现:
1,InputStreamReader:字节到字符的桥梁。
2,OutputStreamWriter:字符到字节的桥梁。
这两个流对象是字符流体系中的成员。
那么他们的转换作用,而本身又是字符流。所以在构造的时候,需要传入字节流对象进来。
构造函数:
InputStreamReader(InputStream):通过该构造函数初始化,使用的是本系统默认 的编码表GBK。
InputStreamReader(InputStream, String charSet):通过该构造函数初始化,可以指定编码表。
OutputStreamWriter(OutputStream, String charSet):通过该构造函数初始化,可以指定编码表。
操作文件的字符流对象是转换流的子类。
Reader
|--InputStreamReader
|--FileReader
Writer
|--OutputStreamWriter
|--FileWriter
注意:
在使用FileReader操作文本数据时,该对象使用的是默认的编码表。
如果要使用指定的编码表时,必须使用转换流。
//操作a.txt中的数据使用的是本系统默认的GBK。
FileReader fr=new FileReader("a.txt");
InputStreamReader isr =newInputStreamReader(new FileInputStream("a.txt");
这两句的代码意义相同。
如果a.txt中的文件的字符数据是通过UTF-8的形式编码。
那么在读取时,就必须指定编码表。
那么转换流必须使用。
InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt")."utf-8");
流操作的基本规律。
1,明确数据源和数据目的。
2,明确操作的数据是否是纯文本数据。
数据源:键盘 System.in,硬盘 File开头的流对象,内存(数组).
数据目的:控制台 System.out, 硬盘File开头的流对象,内存(数组);
将键盘录入的数据存储到一个文件中。
class Dmeo
{
public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
//基本读写
String line = null;
while((line=br.readLine())!=null){
if("over".equals(line)){
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
将一个文本文件展示在控制台:
class Demo
{
public static void main(String[] args)
{
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//基本读写
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,
并将原来文件的扩展名从.java改为.jad。
public class CopyFolder {
public static void main(String[] args) throws IOException {
//封装源目录
File file = new File("d:\\java");
//封装目的地目录
File src = new File("d:\\jad");
//得到一个满足条件的文件数组对象
File[] fileArray = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir,name).isFile() && name.endsWith(".java");
}
});
//遍历文件对象数组,获取到每一个文件对象。
for(File f : fileArray){
//获取旧名称
String oldName = f.getName(); //CopyTest2.java
//起新名字
String newName = oldName.replace(".java", ".jad"); //CopyTest2.jad
//重新把新名字的文件封装成目的地目录下的文件
File srcFile = new File(src,newName); //d:\\jad\\CopyTest2.jad
//要求把下面的代码封装成一个方法。
BufferedReader br = new BufferedReader(new FileReader(f));
BufferedWriter bw = new BufferedWriter(new FileWriter(srcFile));
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
}
----------------------------------android培训、java培训、期待与您交流!------------------------------
字节流:
抽象基类:
InputStream
OutputStream。
字节流可以操作任何数据。
注意:
字符流使用的数组是字符数组。char[]chs
字节流使用的数组是字节数组。byte[] bys
FileOutputStream fos=newFileOutputStream(new FileOutputStream("a.txt");
fos.write("ace");//直接将数据写入到了目的地。
fos.close();//关闭资源。
FileInputStream fis=new FileInputStream("a.txt")
fis.available();//获取关联的文件的字节数。
//如果文件的体积不是很大。
//可以这样操作。
byte[] buf=new byte[fis.available()];//创建一个刚刚好的缓冲区。
//但是这有一个弊端,就是文件过大,大小超出jvm的内容空间时,会内存溢出。
fis.read(buf);
System.out.println(new String(buf));
复制一个图片:
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("1.jpg");
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("2.jpg");
int by=0;
while((by=bis.read())!=-1)
{
bos.write(by);
}
bos.close();
bis.close();
转换流:
特点:
1,是字节流和字符流之间的桥梁。
2,该流对象中可以对读取到的字节数据进行指定编码表的编码转换。
什么时候使用呢?
1,当字节和字符之间有转换动作时。
2,流操作的数据需要进行编码表的指定时。
具体的对象体现:
1,InputStreamReader:字节到字符的桥梁。
2,OutputStreamWriter:字符到字节的桥梁。
这两个流对象是字符流体系中的成员。
那么他们的转换作用,而本身又是字符流。所以在构造的时候,需要传入字节流对象进来。
构造函数:
InputStreamReader(InputStream):通过该构造函数初始化,使用的是本系统默认 的编码表GBK。
InputStreamReader(InputStream, String charSet):通过该构造函数初始化,可以指定编码表。
OutputStreamWriter(OutputStream, String charSet):通过该构造函数初始化,可以指定编码表。
操作文件的字符流对象是转换流的子类。
Reader
|--InputStreamReader
|--FileReader
Writer
|--OutputStreamWriter
|--FileWriter
注意:
在使用FileReader操作文本数据时,该对象使用的是默认的编码表。
如果要使用指定的编码表时,必须使用转换流。
//操作a.txt中的数据使用的是本系统默认的GBK。
FileReader fr=new FileReader("a.txt");
InputStreamReader isr =newInputStreamReader(new FileInputStream("a.txt");
这两句的代码意义相同。
如果a.txt中的文件的字符数据是通过UTF-8的形式编码。
那么在读取时,就必须指定编码表。
那么转换流必须使用。
InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt")."utf-8");
流操作的基本规律。
1,明确数据源和数据目的。
2,明确操作的数据是否是纯文本数据。
数据源:键盘 System.in,硬盘 File开头的流对象,内存(数组).
数据目的:控制台 System.out, 硬盘File开头的流对象,内存(数组);
将键盘录入的数据存储到一个文件中。
class Dmeo
{
public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));
//基本读写
String line = null;
while((line=br.readLine())!=null){
if("over".equals(line)){
break;
}
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
将一个文本文件展示在控制台:
class Demo
{
public static void main(String[] args)
{
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//基本读写
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,
并将原来文件的扩展名从.java改为.jad。
public class CopyFolder {
public static void main(String[] args) throws IOException {
//封装源目录
File file = new File("d:\\java");
//封装目的地目录
File src = new File("d:\\jad");
//得到一个满足条件的文件数组对象
File[] fileArray = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return new File(dir,name).isFile() && name.endsWith(".java");
}
});
//遍历文件对象数组,获取到每一个文件对象。
for(File f : fileArray){
//获取旧名称
String oldName = f.getName(); //CopyTest2.java
//起新名字
String newName = oldName.replace(".java", ".jad"); //CopyTest2.jad
//重新把新名字的文件封装成目的地目录下的文件
File srcFile = new File(src,newName); //d:\\jad\\CopyTest2.jad
//要求把下面的代码封装成一个方法。
BufferedReader br = new BufferedReader(new FileReader(f));
BufferedWriter bw = new BufferedWriter(new FileWriter(srcFile));
String line = null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();
bw.flush();
}
bw.close();
br.close();
}
}
}
----------------------------------android培训、java培训、期待与您交流!------------------------------
相关文章推荐
- 黑马程序员----JAVA----IO小结(3)
- 黑马程序员----JAVA----IO小结(1)
- 黑马程序员—Java基础—IO1
- 黑马程序员--第二阶段Java高级IO--第18天
- 黑马程序员——Java基础——IO输入与输出_1
- 【黑马程序员】-----java基础----IO
- 黑马程序员——Java基础--IO(三)
- java IO回顾小结
- 黑马程序员_Java基础_IO
- JavaIO知识小结和操作规律
- 黑马程序员——Java IO字符流、字节流(小练习)
- 黑马程序员-----java基础(IO下)
- 黑马程序员--Java中GUI小结
- 黑马程序员——java基础---IO(上)
- 黑马程序员---Java学习笔记之io2
- 黑马程序员_java基础之IO(输入,输出流)
- 黑马程序员——java基础之内部类小结
- 黑马程序员---java基础之IO(字符流和字节流)
- 黑马程序员________Java中IO技术其他常用流对象学习笔记
- 黑马程序员---Java基础学习笔记IO-2