FileInputStream和FileOutputStream读写文件,然后实现文件的拷贝。

30人阅读 评论(0) 收藏 举报
分类:

IO流

Java里面分为两种流:字节流和字符流。如果细分的话有,可分为:4个文件流,4个缓冲流,2个转换流,2个打印流,2个序列化流,2个数据流。

//文件流
FileInputStream            //字节输入流
FileOutPutStream           //字节输出流
FileReader                 //字符输入流
FileWriter                 //字符输出流

//缓冲流
BufferedInputStream        //字节输入缓冲流
BufferedOutputStream       //字节输出缓冲流
BufferedReader             //字符输入缓冲流
BufferedWriter             //字符输出缓冲流

//序列化流
ObjectInputStream          
ObjectOutputStream

//转换流(字符流)  将字节流转换为字符流
InputStreamReader
OutputStreamWriter

//数据流
DataInputStream
DataOutputStream

//打印流
PrintWriter
PrintStream

输入输出方向

对于IO流而言,IO(input Output)输入输出的意思。在输入输出之间我们需要找一个参照物,然后判断相对于参照物而言是输入还是输出。而我们一般会把内存作为参照物。当我们打开一个应用程序时,计算机会把那个应用程序加载到内存,然后等待CPU执行,对内存就相当于输入。当我们写代码时,代码首先会进内存里面,按下Ctrl+S时,计算机会将内存中的代码保存到硬盘中,对内存而言就相当与输出。带有Input  Reader输入(读),Output Writer输出(写)。

字节流和字符流

Stream表示基于字节流,Writer和Reader表示基于字符流。


用字节流FileInputStream和FileOutputStream来读写文件

package FileStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;

public class File_Stream {
    public static void main(String[] args) throws IOException {
        Scanner sca=new Scanner(System.in);

        //写文件
        System.out.print("请输入文件名:");
        String name=sca.next();
        File file=new File(name+".txt");//文件名        相对路径(项目名根目录下)
//      FileOutputStream fs=new FileOutputStream(file);                //如果文件存在 覆盖
        FileOutputStream fos=new FileOutputStream(file,true);//true表示追加,如果文件存在 向里面继续添加内容
        System.out.println("请输入写入的内容:");
        String str=sca.next();
        byte bytes[]=str.getBytes();         //FileOutputStream 是基于字节流  把要写入的信息 保存到字节数组中
        fos.write(bytes,0,bytes.length);//将字节数组中全部内容写到文件中   从0—数组的长度
        fos.close();//关闭流
        System.out.println("文件写入成功!");

        //读文件
        FileInputStream fis=new FileInputStream(file);
        byte bt[]=new byte[1024];//1KB       每次最多读取的1KB  根据文件大小而定
        int temp=0;
        while((temp=fis.read(bt))!=-1){    //将数据保存到数组(缓冲区)中 并返回读取的字节数  -1表示读完了
            System.out.println(new String(bt,0,temp));//输出数组中保存内容 按照每次读取的字节数
        }
        fis.close();
    }
}

运行结果:


由于FileInputStream和FileOutputStream是基于字节流的,所以每次都需要定义byte数组对读写进行操作。

PS:如果单独读取一个文件时,出现了乱码。可能是字符集不同,Eclipse默认为GBK,IDEA默认为UTF-8,改成对应的字符集即可。

用字节流FileInputStream和FileOutputStream来Copy文件

package FileStream;

import java.io.*;

public class File_Copy {
    public static void main(String[] args) throws IOException {
        File file=new File("dome.txt");
        if(!file.isFile()){    //判断文件是否存在
            System.out.println("该文件不存在,无法Copy!");
            return;
        }

        FileInputStream fis=new FileInputStream(file);   //"src\\"+file.getName()
        FileOutputStream fos=new FileOutputStream("src/"+file.getName());//把文件拷(输出)到src下

        byte bytes[]=new byte[1024];
        int temp=0;  //边读边写
        while((temp=fis.read(bytes))!=-1){  //读
            fos.write(bytes,0,temp);   //写
        }
        fis.close();
        fos.close();
        System.out.println("文件拷贝成功!");
    }
}

运行结果:


在Copy文件的时候,只需要将FileInputStream和FileOutputStream一起使用,边读边写,就可以达到Copy文件的目的。


   每日鸡汤:比你优秀的人仍在努力,比你差的人还没放弃,你没还有什么借口不坚持下去。


Over!

查看评论

嵌入式Linux文件与串口编程

-
  • 1970年01月01日 08:00

用FileInputStream和FileOutputStream拷贝文件

在E:\JavaIO中新建abc.txt文件,并在里面写上一些文字。现在要做的是,在Eclipse里面用FileInputStream和 FileOutputStream的read()和write(...
  • u014042146
  • u014042146
  • 2015-09-10 16:35:03
  • 1090

使用FileInputStream和FileOutputStream实现文件的复制

FileInputStream和FileOutputStream是比较简单的输入和输出流。对于输入和出流的理解下面我用图示的方法给大家说明 从上图中我们可以看到FileInputStream和F...
  • zhangdongxuan
  • zhangdongxuan
  • 2015-07-17 10:49:42
  • 2764

用流FileInputStream FileOutputStream 实现文件复制

  • 2010年03月26日 23:06
  • 687B
  • 下载

使用Java中的FileInputStream、FileOutputStream复制图片

1.FileInputStream、FileOutputStream两个流是处理二进制文件。主要是处理图片,视频等等的文件。 2.FileInputStream:读取二进制文件的内容。 3.Fil...
  • weixin_36279318
  • weixin_36279318
  • 2017-08-22 11:10:27
  • 791

Java——FileInputStream&FileOutputStream字节流实现文件复制

要实现文件的复制,有很多种方法。今天介绍一种最基础的方法:使用FileInputStream和FileOutputStream实现文件的复制。思路:要实现文件的复制,其实质就是对源文件数据进行读取,再...
  • u012325167
  • u012325167
  • 2016-03-11 22:00:51
  • 3240

用FileInputStream和FileOutPutStream读写文件

用FileInputStream和FileOutPutStream读写文件   用FileInputStream和FileOutPutStream读写文件 package io; im...
  • dufufd
  • dufufd
  • 2016-05-04 15:43:26
  • 2905

i/o—— Android使用FileInputStream和FileOutputStream进行文件I/O操作

转自http://blog.csdn.net/zchlww/article/details/45869197 在文件I/O操作上,除了标准的Java I/O类和方法外,Android系统...
  • chuntiandejiaobu10
  • chuntiandejiaobu10
  • 2016-09-04 18:36:45
  • 526

IO流之创建文件并fileInputStream、fileOutputStream 读写操作

创建文件夹可以使用file类的mkdirs()和mkdir()方法,区别在于: mkdir() 创建此抽象路径名指定的目录。 mkdirs() ...
  • I_Am_Zou
  • I_Am_Zou
  • 2016-07-29 16:39:00
  • 3645

使用FileInputStream和FileOutputStream实现本地文件读写操作

FileInputStream和FileOutputStream 是一对继承与InputStream和OutputStream的类,分别用来创建磁盘文件的输入流和输出流对象,开发中我们会经常需要使用F...
  • qq_20785431
  • qq_20785431
  • 2016-08-26 17:50:57
  • 4446
    个人资料
    等级:
    访问量: 326
    积分: 155
    排名: 110万+
    文章存档
    最新评论