IT干货网

IO流之FileOutputStream

sanshao 2022年03月12日 编程设计 164 0

IO流之FileOutputStream

普通写入文件

以下代码使用FileOutputStream把数据写入硬盘文件:

package com.javalearn.io.fileoout; 
 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
 
public class TestForFileOutputStream { 
    public static void main(String[] args) { 
        FileOutputStream fileOutputStream = null; 
        try { 
            fileOutputStream = new FileOutputStream("myfile");  // 先将原文件清空,再写入,谨慎使用。若无此文件则新建。在文件名后添加参数true,则是在原文件末尾追加内容,不会清空。 
            byte[] bytes = {97,98,99,100}; 
            fileOutputStream.write(bytes);   
            fileOutputStream.flush(); 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } finally { 
            if(fileOutputStream != null) { 
                try { 
                    fileOutputStream.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
 
    } 
} 
 

输出文件内容:

abcd 

把字符串写入文件

把字符串写入文件只需把字符串转化为字节数组即可:

package com.javalearn.io.fileoout; 
 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.nio.charset.StandardCharsets; 
 
public class TestForFileOutputStream { 
    public static void main(String[] args) { 
        FileOutputStream fileOutputStream = null; 
        try { 
            fileOutputStream = new FileOutputStream("myfile",true);  // myfile文件中有abcdabcd 8个字符 
            String s = "今天晚上吃火锅怎么样?"; 
            byte[] bytes = s.getBytes(StandardCharsets.UTF_8);  // 字符串转为字节数组 
            fileOutputStream.write(bytes); 
            fileOutputStream.flush();  // output别忘了flush 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } finally { 
            if(fileOutputStream != null) { 
                try { 
                    fileOutputStream.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
 
    } 
} 
 

输出文件内容:

abcdabcd今天晚上吃火锅怎么样? 

文件复制

以下代码使用FileInputStream和FileOutputStream进行文件复制:

package com.javalearn.io.copy; 
 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
 
public class TestForCopy { 
    public static void main(String[] args) { 
        FileInputStream fileInputStream = null; 
        FileOutputStream fileOutputStream = null; 
        try { 
            // 任何文件都能复制 
            fileInputStream = new FileInputStream("D:\\typora笔记\\java\\io流\\IO流之FileInputStream.md"); 
            fileOutputStream = new FileOutputStream("D:\\typora笔记\\java\\io流\\临时文件夹\\复制到这个文件.md");  // 把数据复制到一个新的文件内,而不是复制到一个文件夹中,需要具体到文件类型 
            byte[] bytes = new byte[1024*1024];  // 一次复制1M 
            int count = 0; 
            while((count = fileInputStream.read(bytes))!=-1) {  // 读到内存 
                fileOutputStream.write(bytes,0,count);  // 写到硬盘 
            } 
            fileOutputStream.flush(); 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } finally {  //input的close和output的close需要分开try-catch,因为如果其中1个出现异常会让另一个关闭不了。 
            if(fileInputStream != null) { 
                try { 
                    fileInputStream.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
            if (fileOutputStream!=null) { 
                try { 
                    fileOutputStream.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
 
    } 
} 
 

评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

IO流之FileInputStream