JAVA高级应用学习笔记----流
原创作品,允许转载,转载时请务必以超链接形式标明文章
原始出处 、作者信息和本声明。否则将追究法律责任。
http://youxue.blog.51cto.com/231393/47617
Stream (流): 数据从一端到另一端
字节流: 读写二进制的对象
字符流: 读写的都是字符 方法:Reader Write
文件: 相关记录数据的集合
字节流: 读写二进制的对象
字符流: 读写的都是字符 方法:Reader Write
文件: 相关记录数据的集合
JAVA.io.File
**************************************
java.io.file的常用方法:
File(File parent,String child) 文件路径和文件对象
File(File parent) 只创建一个文件路径
File(String parentname)
File(String parent,String child)
public String getPath()
public String getParent()
public String getAbsolutePath()
public boolean exists()
public long length()
public boolean createNewFile() throws IOException
public boolean mkdir() throwsIOException
**************************************
InputStream 输入流它是一个抽象类
**************************************
java.io.file的常用方法:
File(File parent,String child) 文件路径和文件对象
File(File parent) 只创建一个文件路径
File(String parentname)
File(String parent,String child)
public String getPath()
public String getParent()
public String getAbsolutePath()
public boolean exists()
public long length()
public boolean createNewFile() throws IOException
public boolean mkdir() throwsIOException
**************************************
InputStream 输入流它是一个抽象类
重要方法:
read() 从输入流中读取下一个数据字节
read(byte[] b) 读取一定数量的字节并将其存储在缓冲区数组b中
available() 返回输入流方法的下不受阻塞而读取的字节数
skip(long n) 跳过和放弃输入流中的N个数据字节
mark(int readlimit) 在此输入流中标记当前的位置
reset() 将此输入重新定位到对此输入流最后调用mark方法时
read() 从输入流中读取下一个数据字节
read(byte[] b) 读取一定数量的字节并将其存储在缓冲区数组b中
available() 返回输入流方法的下不受阻塞而读取的字节数
skip(long n) 跳过和放弃输入流中的N个数据字节
mark(int readlimit) 在此输入流中标记当前的位置
reset() 将此输入重新定位到对此输入流最后调用mark方法时
的位置
close() 关闭输入流并释放所有系统资源
**************************************
OutputStream 输出流
close() 关闭输入流并释放所有系统资源
**************************************
OutputStream 输出流
重要方法:
write(int b) 将指定的字节写入输出流
flush() 刷新输出流强制写出所有缓冲的输出字符
close() 关闭输出流并释放所有系统资源
**************************************
FilterInputStream 和 FilterOutputStream
目的:增加原有类的功能使其读(写)得更快而且更有效
write(int b) 将指定的字节写入输出流
flush() 刷新输出流强制写出所有缓冲的输出字符
close() 关闭输出流并释放所有系统资源
**************************************
FilterInputStream 和 FilterOutputStream
目的:增加原有类的功能使其读(写)得更快而且更有效
FileInputStream 文件输入流
用FileInputStream 读文本文件(1)
引入相关的类
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
构造一个文件输入流对象
InputStream fileobject = new FileInputStream(“text.txt”);
用FileInputStream 读文本文件(2)
利用文件输入流类的方法读取文本文件的数据
fileobject.available(); //可读取的字节数
fileobject.read(); //读取文件的数据
关闭文件输入流对象
fileobject.close();
用FileInputStream 读文本文件(1)
引入相关的类
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
构造一个文件输入流对象
InputStream fileobject = new FileInputStream(“text.txt”);
用FileInputStream 读文本文件(2)
利用文件输入流类的方法读取文本文件的数据
fileobject.available(); //可读取的字节数
fileobject.read(); //读取文件的数据
关闭文件输入流对象
fileobject.close();
例:
public static void main(String[] args) throws IOException {
int size;
InputStream fileobject = new FileInputStream(args[0] );
System.out.println(“可读取的字节数: "
+ (size = fileobject.available()));
char[] text = new char[200] ;
for (int count = 0; count < size; count++) {
text[count] = ((char) fileobject.read());
System.out.print(text[count]);
}
System.out.println("");
fileobject.close();
}
public static void main(String[] args) throws IOException {
int size;
InputStream fileobject = new FileInputStream(args[0] );
System.out.println(“可读取的字节数: "
+ (size = fileobject.available()));
char[] text = new char[200] ;
for (int count = 0; count < size; count++) {
text[count] = ((char) fileobject.read());
System.out.print(text[count]);
}
System.out.println("");
fileobject.close();
}
**************************************
FileOutputStream 文件输出流
FileOutputStream 文件输出流
用FileOutputStream 写文本文件(1)
引入相关的类
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
构造一个文件输出流对象
OutputStream fos = new FileOutputStream("Text.txt");
引入相关的类
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
构造一个文件输出流对象
OutputStream fos = new FileOutputStream("Text.txt");
用FileOutputStream 写文本文件(2)
利用文件输出流的方法写文本文件
String str ="好好学习Java";
byte[] words = str.getBytes();
fos.write(words, 0, words.length);
关闭文件输出流
fos.close();
利用文件输出流的方法写文本文件
String str ="好好学习Java";
byte[] words = str.getBytes();
fos.write(words, 0, words.length);
关闭文件输出流
fos.close();
例:
public static void main(String[] args) {
try {
String str ="好好学习Java";
byte[] words = str.getBytes();
OutputStream fos = new FileOutputStream("Text.txt");
fos.write(words, 0, words.length);
System.out.println("Text文件已更新!");
fos.close();
} catch (IOException obj) {
System.out.println("创建文件时出错!");
}
}
public static void main(String[] args) {
try {
String str ="好好学习Java";
byte[] words = str.getBytes();
OutputStream fos = new FileOutputStream("Text.txt");
fos.write(words, 0, words.length);
System.out.println("Text文件已更新!");
fos.close();
} catch (IOException obj) {
System.out.println("创建文件时出错!");
}
}
*************************************************
过滤一个流
过滤一个流
重要的过滤流--------缓冲流
缓冲字节流:
BufferedInputStream
BufferedOutputStream
用BufferedReader 读文本文件 (1)
引入相关的类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
构造一个BufferedReader对象
FileReader fr=new FileReader("mytest.txt");
BufferedReader br=new BufferedReader(fr);
缓冲字节流:
BufferedInputStream
BufferedOutputStream
用BufferedReader 读文本文件 (1)
引入相关的类
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
构造一个BufferedReader对象
FileReader fr=new FileReader("mytest.txt");
BufferedReader br=new BufferedReader(fr);
利用BufferedReader的方法读取文本文件的数据
br.readLine(); //读取一行数据,返回字符串
关闭相关的流对象
br.close();
fr.close();
例:
/**创建一个FileReader对象.*/
FileReader fr=new FileReader("mytest.txt");
br.readLine(); //读取一行数据,返回字符串
关闭相关的流对象
br.close();
fr.close();
例:
/**创建一个FileReader对象.*/
FileReader fr=new FileReader("mytest.txt");
/**创建一个BufferedReader 对象.*/
BufferedReader br=new BufferedReader(fr);
BufferedReader br=new BufferedReader(fr);
/**读取一行数据.*/
String line=br.readLine();
String line=br.readLine();
while(line!=null){
System.out.println(line);
line=br.readLine();
}
System.out.println(line);
line=br.readLine();
}
/**流的关闭.*/
br.close();
fr.close();
br.close();
fr.close();
*********************************
用BufferedWriter 写文本文件
引入相关的类
import java.io.FileWriter ;
import java.io.BufferedWriter ;
import java.io.IOException;
构造一个BufferedWriter对象
FileWriter fw=new FileWriter("mytest.txt");
BufferedWriter bw=new BufferedWriter(fw);
利用BufferedWriter的方法写文本文件
bw.write (“hello”);
相关流对象的清空和关闭
bw.flush();
fw.close();
例:
/**创建一个FileWriter 对象*/
FileWriter fw=new FileWriter("mytest.txt");
/**创建一个BufferedWriter 对象*/
BufferedWriter bw=new BufferedWriter(fw);
bw.write("大家好!");
bw.write("我正在学习BufferedWriter。");
bw.newLine();
bw.write("请多多指教!");
bw.newLine();
bw.write(“好好学习VCDP");
bw.flush();
fw.close();
//
字符流类
Reader和Writer
FileReader和FileWriter
BufferedReader和BufferedWriter
//
习题:在D盘里创建一个AAA文件夹,在文件夹里在建一个T1文件夹,在T1建一个a.txt文件
Import java.io.*
class A
{
public static void main(String args[]) throws IOException
{
File f=new File("D:\\AAA\\t1");
if(!f.exists()){//判断有无此文件夹,在就复盖,无创建
f.mkdirs();//一次性可创建多个文件夹,若只创建一个文件夹
用BufferedWriter 写文本文件
引入相关的类
import java.io.FileWriter ;
import java.io.BufferedWriter ;
import java.io.IOException;
构造一个BufferedWriter对象
FileWriter fw=new FileWriter("mytest.txt");
BufferedWriter bw=new BufferedWriter(fw);
利用BufferedWriter的方法写文本文件
bw.write (“hello”);
相关流对象的清空和关闭
bw.flush();
fw.close();
例:
/**创建一个FileWriter 对象*/
FileWriter fw=new FileWriter("mytest.txt");
/**创建一个BufferedWriter 对象*/
BufferedWriter bw=new BufferedWriter(fw);
bw.write("大家好!");
bw.write("我正在学习BufferedWriter。");
bw.newLine();
bw.write("请多多指教!");
bw.newLine();
bw.write(“好好学习VCDP");
bw.flush();
fw.close();
//
字符流类
Reader和Writer
FileReader和FileWriter
BufferedReader和BufferedWriter
//
习题:在D盘里创建一个AAA文件夹,在文件夹里在建一个T1文件夹,在T1建一个a.txt文件
Import java.io.*
class A
{
public static void main(String args[]) throws IOException
{
File f=new File("D:\\AAA\\t1");
if(!f.exists()){//判断有无此文件夹,在就复盖,无创建
f.mkdirs();//一次性可创建多个文件夹,若只创建一个文件夹
用f.mkdir()
}
File nextFile=new File(f,"a.txt");//在文件夹里创建一个a.txt文
}
File nextFile=new File(f,"a.txt");//在文件夹里创建一个a.txt文
件
nextf.createNewFile(); //createNewFile()是创建文件的
nextf.createNewFile(); //createNewFile()是创建文件的
方法
///
读文件
File a=new File("D:\\AAA\\t1\\a.txt");
inputStream in=new FileInputStream(a);
in.read();//一个字节一个字节读反回ASCII码
读文件
File a=new File("D:\\AAA\\t1\\a.txt");
inputStream in=new FileInputStream(a);
in.read();//一个字节一个字节读反回ASCII码
int n=in.available()
StringBuffer s=new StringBuffer
for(int i=0;i<=n;i++)
{
char(in.read());//将int转成Char型或String+空格
s.append(char(in.read));//返回所有字符内容
}
System.out.println(s);//将所有字符内容打印
StringBuffer s=new StringBuffer
for(int i=0;i<=n;i++)
{
char(in.read());//将int转成Char型或String+空格
s.append(char(in.read));//返回所有字符内容
}
System.out.println(s);//将所有字符内容打印
//
若有中文的将上读文件替换
int n=in.available();
byte b[]=new byte[];
in.read[a];//一次性读入
String s=new String (b);
System.out.println(s);
//
若有中文的将上读文件替换
int n=in.available();
byte b[]=new byte[];
in.read[a];//一次性读入
String s=new String (b);
System.out.println(s);
//
写文件
File file =new File("D:\\AAA\\t1\\a.txt");
OutputStream out=new FileOutputStream(file);
Strint s="Hello";
out.write(s.getBytes());
out.close();//关闭流
}
}
///
1> 构建如下目录
d:\hello\t1\a.txt
d:\hello\t1\b.txt
d:\hello\t1\c.txt
import java.io.*;
class A
{
public static void main(String[] args) throws IOException
{
File f=new File("D:\\hello\\t1");
if(!f.exists())
{
f.mkdirs();
}
File f1=new File(f,"a.txt");
f1.createNewFile();
File f2=new File(f,"b.txt");
f2.createNewFile();
File f3=new File(f,"c.txt");
f3.createNewFile();
}
}
File file =new File("D:\\AAA\\t1\\a.txt");
OutputStream out=new FileOutputStream(file);
Strint s="Hello";
out.write(s.getBytes());
out.close();//关闭流
}
}
///
1> 构建如下目录
d:\hello\t1\a.txt
d:\hello\t1\b.txt
d:\hello\t1\c.txt
import java.io.*;
class A
{
public static void main(String[] args) throws IOException
{
File f=new File("D:\\hello\\t1");
if(!f.exists())
{
f.mkdirs();
}
File f1=new File(f,"a.txt");
f1.createNewFile();
File f2=new File(f,"b.txt");
f2.createNewFile();
File f3=new File(f,"c.txt");
f3.createNewFile();
}
}
2> 使用流写入如下内容
a.txt
hello World
MyWorld
b.txt
XXX学校
XX中心
c.txt
学号:XX
名字:XX
import java.io.*;
class B
{
public static void main(String[] args) throws IOException
{
File f=new File("D:\\hello\\t1\\a.txt");
OutputStream out=new FileOutputStream(f);
String str="hello World\r\nMyWorld";
out.write(str.getBytes());
out.close();
a.txt
hello World
MyWorld
b.txt
XXX学校
XX中心
c.txt
学号:XX
名字:XX
import java.io.*;
class B
{
public static void main(String[] args) throws IOException
{
File f=new File("D:\\hello\\t1\\a.txt");
OutputStream out=new FileOutputStream(f);
String str="hello World\r\nMyWorld";
out.write(str.getBytes());
out.close();
File f1=new File("D:\\hello\\t1\\b.txt");
OutputStream out1=new FileOutputStream(f1);
String str1="XXX学校\r\nXX中心";
out1.write(str1.getBytes());
out1.close();
File f2=new File("D:\\hello\\t1\\c.txt");
OutputStream out2=new FileOutputStream(f2);
String str2="学号:XXX\r\n名字:XXX";
out2.write(str2.getBytes());
out2.close();
}
}
OutputStream out1=new FileOutputStream(f1);
String str1="XXX学校\r\nXX中心";
out1.write(str1.getBytes());
out1.close();
File f2=new File("D:\\hello\\t1\\c.txt");
OutputStream out2=new FileOutputStream(f2);
String str2="学号:XXX\r\n名字:XXX";
out2.write(str2.getBytes());
out2.close();
}
}
3>使用流读入C盘下的所有文件夹和文件,将所有的文件夹名和文件名写入到String[]中,
在控制台上打印。并写入到d:\c盘内容.txt文件中去
import java.io.*;
public class C {
public static void main(String[] args) throws IOException{
import java.io.*;
public class C {
public static void main(String[] args) throws IOException{
File ff =new File("d:\\c盘内容.txt");
ff.createNewFile();
File file =new File("c:\\");
String ary[]=file.list();
String a="";
for(String b: ary){
a=a+b+"\r\n";
}
OutputStream out = new FileOutputStream(ff);
out.write(a.getBytes());
out.close();
}
}
??????????????????????????????/流的复习
java.io
类 PrintStream
java.lang.Object
java.io.OutputStream
java.io.FilterOutputStream
java.io.PrintStream
PrintStream(File file)
创建具有指定文件且不带自动行刷新的新打印流。
PrintStream(File file, String csn)
创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
创建具有指定文件且不带自动行刷新的新打印流。
PrintStream(File file, String csn)
创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
PrintStream(OutputStream out)
创建新的打印流。
创建新的打印流。
PrintStream(OutputStream out, boolean autoFlush)
创建新的打印流。
PrintStream(OutputStream out, boolean autoFlush, String encoding)
创建新的打印流。
PrintStream(String fileName)
创建具有指定文件名称且不带自动行刷新的新打印流。
PrintStream(String fileName, String csn)
创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
创建新的打印流。
PrintStream(OutputStream out, boolean autoFlush, String encoding)
创建新的打印流。
PrintStream(String fileName)
创建具有指定文件名称且不带自动行刷新的新打印流。
PrintStream(String fileName, String csn)
创建具有指定文件名称和字符集且不带自动行刷新的新打印流。
System.out - 标准输出流 显示器 OutputStream
System.in - 标准输入流 键盘 InputStream
System.in - 标准输入流 键盘 InputStream
PrintStream System.out = PrintStream(System.out)
void print(Object obj)
打印对象。
void print(String s)
打印字符串。
PrintStream printf(Locale l, String format, Object... args)
使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
PrintStream printf(String format, Object... args)
使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
打印对象。
void print(String s)
打印字符串。
PrintStream printf(Locale l, String format, Object... args)
使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
PrintStream printf(String format, Object... args)
使用指定格式字符串和参数将格式化的字符串写入此输出流的便捷方法。
void println(int x)
打印整数,然后终止该行。
void println(long x)
打印 long,然后终止该行。
打印整数,然后终止该行。
void println(long x)
打印 long,然后终止该行。
字节流--8 位 字节的方式读写 - 适用于一切情况
InputStream OutputStream
读取二进制很方便
Java - char -> 16位
字符流--16 位 Unicode 主要用于读写字符串
Reader Writer
Java - char -> 16位
字符流--16 位 Unicode 主要用于读写字符串
Reader Writer
public abstract class InputStream
read() 读字节
available() 查询可用字节数
close() 关闭流
//InputStream的自类必须实现的方法
abstract 方法
skip() 空方法
mark() 空方法
reset() 空方法
BufferedInputStream 实现过skip()mark()reset()
FileInputStream 没有实现过 skip()mark()reset()
FileInputStream 没有实现过 skip()mark()reset()
//
public abstract class OutputStream
public abstract class OutputStream
write() abstract 方法
close() abstract 方法
flush() 空方法
close() abstract 方法
flush() 空方法
FileOutputStream 没有实现过 flush()
BufferedOutputStream 实现过flush()
///
BufferedOutputStream 实现过flush()
///
1> Java中流分字节流和字符流 java.io.*
字节流--8 位
InputStream OutputStream
字符流--16 位 Unicode
Reader Writer
InputStream OutputStream
字符流--16 位 Unicode
Reader Writer
2> 输入流 - 从 源 到 程序 源 - XXXInputStream
XXXReader
输出流 - 从 程序 到 目的地 目的地- XXXOutputStream
输出流 - 从 程序 到 目的地 目的地- XXXOutputStream
XXXWriter
过虑流 - 用于加强已有输入输出流的功能
输入型
输出信
过虑流 - 用于加强已有输入输出流的功能
输入型
输出信
BufferedInputStream br =
new BufferedInputStream(new FileInputStream("文件
new BufferedInputStream(new FileInputStream("文件
名"));