Java读取文件操作,输入输出流

Java读取文件操作,
输入输出流的用法:FileInputStream、FileOutputStream类


1.首先了解一下,IO流继承关系,如图所示:(了解)

这里写图片描述

2.下列源码实现对文件夹的创建和删除操作

import java.io.File;

public class Demo01 {
    public static void main(String[] args) {

        //在项目的根目录下创建一个a文件夹
        File file = new File("a/b/c");

        //创建目录

//      if(file.mkdirs()){
//          System.out.println("成功!");
//      }else{
//          System.out.println("失败!");
//      }
        //删除目录
        if(file.delete()){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }

    }
}

3.请看下列源码实现对文件的操作

—— 创建一个文件
—— 对文件的删除
—— 修改文件名

import java.io.File;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) {

        //创建一个File对象
        File file = new File("../相对路径.txt");
        //创建一个新文件
        try {
            if(file.createNewFile()){
                System.out.println("文件创建成功");
            }else{
                System.out.println("文件创建失败");
            }   
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件创建异常");
        }

//      //使用绝对路径
//      File file3 = new File("D://Hello2");
//      //创建一个新文件
//      try {
//          if(file3.createNewFile()){
//              System.out.println("文件创建成功");
//          }else{
//              System.out.println("文件创建失败");
//          }   
//      } catch (IOException e) {
//          e.printStackTrace();
//          System.out.println("文件创建异常");
//      }




//      //删除一个文件
//      if(file.delete()){
//          System.out.println("文件删除成功");
//      }else{
//          System.out.println("文件删除失败");
//      }

//      //重命名
//      File file2 = new File("Hello.java");
//      if(file.renameTo(file2)){
//          System.out.println("重命名成功!!!");
//      }else{
//          System.out.println("重命名失败!!!"); 
//      }

    }
}

4.请看下列源码实现对TXT文件的读取操作

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class Demo {
    public static void main(String[] args) {

        // 文件对象
        File file = new File("a.txt");
        FileInputStream is = null;
        try {
            //字节输入流对象
            is = new FileInputStream(file);

//          while (true) {
//              int i = is.read();
//
//              if (i == -1) {
//                  break;
//              }
//              System.out.println((char) i);
//          }
            //上诉写法改写成如下
            int i;
            while((i = is.read())!=-1){
                System.out.println((char) i);
            }

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (is != null) {
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

上面的代码对于中文的读取会乱码,因为该方法是以字节流的方式进行的:下面来看以字符流的方式实现诉功能:

import java.io.File;
import java.io.FileReader;
import java.io.Reader;

public class Demo04 {
    public static void main(String[] args) {

        //使用字符流读取a.txt
        File file = new File("a.txt");
        Reader reader = null;

        try {
            reader = new FileReader(file);

            char [] b = new char [1024];
            int len = 0;

            while((len = reader.read(b))!=-1){
                System.out.println(new String(b,0,len));
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }
}

5.请看下列源码实现对TXT文件的写入操作

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class Demo02 {
    public static void main(String[] args) {

        File file = new File("b.txt");

        OutputStream os = null;
        try {
            os = new FileOutputStream(file);

            //写
            String s = "hello world!";
            os.write(s.getBytes());

            System.out.println("成功写入");

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

用字符流写文件

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

public class Demo05 {
    public static void main(String[] args) {

        //用字符流写文件
        File file = new File("c.txt"); 

        Writer writer = null;
        try {
            //拼接方式true 不拼接false
            writer = new FileWriter(file,true);

            String s = "你好!!!";

            writer.write(s);
            System.out.println("写入完毕");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            if(writer !=null){
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

6.使用高层流读取文件

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;

public class Demo06 {
    public static void main(String[] args) {
        // 使用高层流读取文件
        File file = new File("a.txt");
        Reader reader = null;
        BufferedReader br = null;

        try {
            // 构造基础流
            reader = new FileReader(file);
            // 在基础流之上构造高层流
            br = new BufferedReader(reader);
            // 读到的一行
            String line = null;
            while ((line = br.readLine()) != null) {
                System.out.println("读到: " + line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 先关闭高层流
            if (br != null) {
                try {
                    br.close();
                } catch (Exception e) {
                    // TODO: handle exception
                }
            }

        }
    }
}

7.一些其他的操作方式



import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo03 {

    public static void main(String[] args) {
        File f = new File("D:/java SE/15 文件IO/视频/06 文件夹的删除.avi");

            if(f.mkdirs()){
            System.out.println("成功!");
        }else{
            System.out.println("失败!");
        }
        try {
            if(f.createNewFile()){
                System.out.println("文件创建成功");
            }else{
                System.out.println("文件创建失败");
            }   
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件创建异常");
        }
    }


    public static void printFileInfo(File f){
//         文件名
        System.out.println("文件名:" + f.getName());
//         文件路径
        System.out.println("文件路径:" + f.getPath());
//         文件绝对路径
        System.out.println("绝对路径:" + f.getAbsolutePath());
//         父文件夹名称
        System.out.println("父文件夹:" + f.getParent());
//         文件是否存在
        System.out.println(f.exists() ? "文件存在" : "文件不存在");
//         文件是否可写
        System.out.println(f.canWrite() ? "文件可写" : "文件不可写");
//         文件是否可读
        System.out.println(f.canRead() ? "文件可读" :"文件不可读");
//         文件是不是目录
        System.out.println(f.isDirectory() ? "文件是目录" : "文件不是目录");
//         文件是不是文件
        System.out.println(f.isFile() ? "文件是文件" : "文件不是文件");
//         路径是不是绝对路径
        System.out.println(f.isAbsolute() ? "路径是绝对路径" : "路径不是绝对路径");
//         文件最后修改时间(人可以看懂)
        long lastModified = f.lastModified();

        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        String sTime = format.format(new Date(lastModified));

        System.out.println("文件最后修改时间:" + sTime);
//         文件的大小
        System.out.println("文件的大小:" + f.length());
    }

}

--------------------- 本文来自 叁念 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_36868342/article/details/76577758?utm_source=copy

猜你喜欢

转载自blog.csdn.net/yezonggang/article/details/82916733
今日推荐