字节型输出
FileOutputStream输出流管理
- import java.io.File ;
- import java.io.OutputStream ;
- import java.io.FileOutputStream ;
- public class OutputStreamDemo01{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- OutputStream out = null ; // 准备好一个输出的对象
- out = new FileOutputStream(f, true) ; // 通过对象多态性,进行实例化 true表示追加内容或者在字符串前加 \r\n
- // 第3步、进行写操作
- String str = "Hello World!!!" ; // 准备一个字符串
- byte b[] = str.getBytes() ; // 只能输出byte数组,所以将字符串变为byte数组
- out.write(b) ; // 将内容输出,保存文件
- // 第4步、关闭输出流
- out.close() ; // 关闭输出流
- }
- };
字节输入流:InputStream
- import java.io.File ;
- import java.io.InputStream ;
- import java.io.FileInputStream ;
- public class InputStreamDemo01{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- InputStream input = null ; // 准备好一个输入的对象
- input = new FileInputStream(f) ; // 通过对象多态性,进行实例化
- // 第3步、进行读操作
- byte b[] = new byte[1024] ; // 所有的内容都读到此数组之中
- input.read(b) ; // 读取内容
- // 第4步、关闭输出流
- input.close() ; // 关闭输出流
- System.out.println("内容为:" + new String(b)) ; // 把byte数组变为字符串输出
- }
- };
红色标注的表明是可以直接读取1024字节
- import java.io.File ;
- import java.io.InputStream ;
- import java.io.FileInputStream ;
- public class InputStreamDemo02{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- InputStream input = null ; // 准备好一个输入的对象
- input = new FileInputStream(f) ; // 通过对象多态性,进行实例化
- // 第3步、进行读操作
- byte b[] = new byte[1024] ; // 所有的内容都读到此数组之中
- int len = input.read(b) ; // 读取内容
- // 第4步、关闭输出流
- input.close() ; // 关闭输出流\
- System.out.println("读入数据的长度:" + len) ;
- System.out.println("内容为:" + new String(b,0,len)) ; // 把byte数组变为字符串输出
- }
- };
如果要想知道文件大小,直接使用File 类即可
- import java.io.File ;
- import java.io.InputStream ;
- import java.io.FileInputStream ;
- public class InputStreamDemo03{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- InputStream input = null ; // 准备好一个输入的对象
- input = new FileInputStream(f) ; // 通过对象多态性,进行实例化
- // 第3步、进行读操作
- byte b[] = new byte[(int)f.length()] ; // 数组大小由文件决定
- int len = input.read(b) ; // 读取内容
- // 第4步、关闭输出流
- input.close() ; // 关闭输出流\
- System.out.println("读入数据的长度:" + len) ;
- System.out.println("内容为:" + new String(b)) ; // 把byte数组变为字符串输出
- }
- };
以上的操作,只适合于知道输入流大小的时候,如果现在不知道大小呢?
- import java.io.File ;
- import java.io.InputStream ;
- import java.io.FileInputStream ;
- public class InputStreamDemo05{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- InputStream input = null ; // 准备好一个输入的对象
- input = new FileInputStream(f) ; // 通过对象多态性,进行实例化
- // 第3步、进行读操作
- byte b[] = new byte[1024] ; // 数组大小由文件决定
- int len = 0 ;
- int temp = 0 ; // 接收每一个读取进来的数据
- while((temp=input.read())!=-1){
- // 表示还有内容,文件没有读完
- b[len] = (byte)temp ;
- len++ ;
- }
- // 第4步、关闭输出流
- input.close() ; // 关闭输出流\
- System.out.println("内容为:" + new String(b,0,len)) ; // 把byte数组变为字符串输出
- }
- };
- import java.io.File ;
- import java.io.Writer ;
- import java.io.FileWriter ;
- public class WriterDemo01{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- Writer out = null ; // 准备好一个输出的对象
- out = new FileWriter(f) ; // 通过对象多态性,进行实例化
- // 第3步、进行写操作
- String str = "Hello World!!!" ; // 准备一个字符串
- out.write(str) ; // 将内容输出,保存文件
- // 第4步、关闭输出流
- out.close() ; // 关闭输出流
- }
- };
- import java.io.File ;
- import java.io.Reader ;
- import java.io.FileReader ;
- public class ReaderDemo01{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- Reader input = null ; // 准备好一个输入的对象
- input = new FileReader(f) ; // 通过对象多态性,进行实例化
- // 第3步、进行读操作
- char c[] = new char[1024] ; // 所有的内容都读到此数组之中
- int len = input.read(c) ; // 读取内容
- // 第4步、关闭输出流
- input.close() ; // 关闭输出流
- System.out.println("内容为:" + new String(c,0,len)) ; // 把字符数组变为字符串输出
- }
- };
也可以使用循环的方式,通过文件是否讲到底的形式读取。
- import java.io.File ;
- import java.io.Reader ;
- import java.io.FileReader ;
- public class ReaderDemo02{
- public static void main(String args[]) throws Exception{ // 异常抛出,不处理
- // 第1步、使用File类找到一个文件
- File f= new File("d:" + File.separator + "test.txt") ; // 声明File对象
- // 第2步、通过子类实例化父类对象
- Reader input = null ; // 准备好一个输入的对象
- input = new FileReader(f) ; // 通过对象多态性,进行实例化
- // 第3步、进行读操作
- char c[] = new char[1024] ; // 所有的内容都读到此数组之中
- int temp = 0 ; // 接收每一个内容
- int len = 0 ; // 读取内容
- while((temp=input.read())!=-1){
- // 如果不是-1就表示还有内容,可以继续读取
- c[len] = (char)temp ;
- len++ ;
- }
- // 第4步、关闭输出流
- input.close() ; // 关闭输出流
- System.out.println("内容为:" + new String(c,0,len)) ; // 把字符数组变为字符串输出
- }
- };
是使用字符流还是使用字节流呢? 肯定使用字节流,因为万一拷贝的是一个图片的。
- import java.io.* ;
- public class Copy{
- public static void main(String args[]){
- if(args.length!=2){ // 判断是否是两个参数
- System.out.println("输入的参数不正确。") ;
- System.out.println("例:java Copy 源文件路径 目标文件路径") ;
- System.exit(1) ; // 系统退出
- }
- File f1 = new File(args[0]) ; // 源文件的File对象
- File f2 = new File(args[1]) ; // 目标文件的File对象
- if(!f1.exists()){
- System.out.println("源文件不存在!") ;
- System.exit(1) ;
- }
- InputStream input = null ; // 准备好输入流对象,读取源文件
- OutputStream out = null ; // 准备好输出流对象,写入目标文件
- try{
- input = new FileInputStream(f1) ;
- }catch(FileNotFoundException e){
- e.printStackTrace() ;
- }
- try{
- out = new FileOutputStream(f2) ;
- }catch(FileNotFoundException e){
- e.printStackTrace() ;
- }
- if(input!=null && out!=null){ // 判断输入或输出是否准备好
- int temp = 0 ;
- try{
- while((temp=input.read())!=-1){ // 开始拷贝
- out.write(temp) ; // 边读边写
- }
- System.out.println("拷贝完成!") ;
- }catch(IOException e){
- e.printStackTrace() ;
- System.out.println("拷贝失败!") ;
- }
- try{
- input.close() ; // 关闭
- out.close() ; // 关闭
- }catch(IOException e){
- e.printStackTrace() ;
- }
- }
- }
- }