Io流的使用

 

file的使用

  1. 文件流的使用

    • FileInpunStream  FileOutOputStream   ----------字符流
    • FileReader Filewriter --------字节流  

如下代码读取文件的内容并将其输入显示器上

package com.nanjing.file;

import java.io.FileReader;

public class TestFileReader {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        FileReader fr=null;
        try {
            fr=new FileReader("d:/2.txt");
            int cnt=0;
            int ch;
            while(-1!=(ch=fr.read())){
                System.out.print((char)ch);
                ++cnt;
            }
            System.out.printf("总共从1.txt中读取了%d个字节",cnt);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}
package com.nanjing.file;
import java.io.FileInputStream;
import java.io.InputStream;
public class TestFileInputStreamr {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        InputStream fr=null;
        try {
            fr=new FileInputStream("d:/2.txt");
            int cnt=0;
            int ch;
            while(-1!=(ch=fr.read())){
                System.out.print((char)ch);
                ++cnt;
            }
            System.out.printf("总共从1.txt中读取了%d个字节",cnt);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

}
  • InputStream 和 OutputStream

1. FileInpunStream是InputStream的子类,因为InputStream是一个抽象类。对是一个抽象类,我们要使用他的子类来new 对象,当然我们也可以这样

Reader fr=null;父类的引用指向子类的对象。

2. FileInpuntStream将文件按字节读取,所以即使有汉字会乱码。

3. public FileInpunStream(String FileName)一个常用函数,就是连接文件的函数。

4. FileOutputStream同理 

5. / \ 在字符串里面使用

  • Reader 和 Writer

1.FileReader是Reader的子类与上面基本相似

2.FileReader是将文件按字符为单位所以不会乱码。

3.public FileReader(String FileName)

4.Writer类似

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

上面二者的区别???

InputStream 和 OutputStream VS Reader 和 Writer

  1. InputStream 和 OutputStream 可以完成所以格式文件的copy
  2. Reader 和 Writer只能完成文本文件的copy
  3. 汉字乱码问题
import java.io.*;

public class TestFileInputStreamOutputStreamCopy
{
    public static void main(String[] args)
    {
        FileInputStream fi = null;
        FileOutputStream fo = null;
        
        try
        {
            fi = new FileInputStream("E:\综艺\歌曲\1.mp3");    
            fo = new FileOutputStream("d:/share/Output.txt"); //可以用QQ音乐打开,成功了 
            int ch;
            
            while (-1 != (ch=fi.read()))
            {
                fo.write(ch);
            }
        }
        catch (FileNotFoundException e)
        {
            System.out.println("文件没有找到!");
            System.exit(-1);
        }
        catch(IOException e)
        {
            System.out.println("文件读写错误!");
            System.exit(-1);
        }
        finally
        {
            try
            {
                if (null != fi)
                {
                    fi.close();
                    fi = null;
                }
                if (null != fo)
                {    
                    fo.close();
                    fo = null;
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
                System.exit(-1);
            }
        }
        
        System.out.println("文件复制成功!");
    }    
}
import java.io.*; 

public class TestFileReaderWriterCopy
{
    public static void main(String[] args)
    {
        FileReader fi = null;
        FileWriter fo = null;
        try
        {
            fi = new FileReader("E:\综艺\歌曲\1.mp3");    
            fo = new FileWriter("d:/share/Output.txt");  //Output.txt用QQ音乐打开失败! 本程序证明了FileWriter 和 FileReader 无法完成视频文件的赋值,实际上FileWriter 和 FileReader 只能完成文本文件的复制
            int ch;
            while (-1 != (ch=fi.read()))
            {
                fo.write(ch);
            }
        }
        catch (FileNotFoundException e)
        {
            System.out.println("文件没有找到!");
            System.exit(-1);
        }
        catch(IOException e)
        {
            System.out.println("文件读写错误!");
            System.exit(-1);
        }
        finally
        {
            try
            {
                if (null != fi)
                {
                    fi.close();
                    fi = null;
                }
                if (null != fo)
                {    
                    fo.close();
                    fo = null;
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
                System.exit(-1);
            }
        }
        System.out.println("文件复制成功!");
    }    
}
加油啦!加油鸭,冲鸭!!!
原文地址:https://www.cnblogs.com/clarencezzh/p/4868390.html