zoukankan      html  css  js  c++  java
  • java.io-java编程中的文件操作

    作为一名习惯了shell编程的工程师,写java最麻烦就是IO操作。曾经一个 > file_name 就完成了写操作,一个 < file_name  或者 cat file_name 就完成了读操作,java的读写文件真台让我头疼了。索性总结下,仅供参考。

    写在前面的话:
    java编程里面对于文件的操作,我分成三种:
    1、目录操作
    2、文件字符型操作
    3、文件流式操作
    对于目录,其实无非两个:是否存在,创建与删除。分别对应于File的fs.exists/fs.mkdir/fs.delete;
    文件字符型操作,其实这个应用场景很少,仅对于ascii文件有效,文件操作,无法两个:读写。分别对应于File的fs.read/fs.write;
    最后是文件流操作,这个应用场景非常广泛,所有文件都可以用。同样,无非两个:读写。分别对应于File的fs.read/fs.write。
    文件操作中,字符型和流式操作,读都一样fs.read,写有所不同,确切的说是读出来后怎么存放,
    字符型需要存放在char数组中,流式存放在byte数组中。然后再一组一组的写。
    当然,如果不存放,直接写,那就没有区别了。
    可以参看下面简单的例子!
    最后,还有很多其他的方法,在我看来对于入门来说太过奢华,不实用,就不说了。

    #Java编程-文件IO操作-读写
    package com.file.qq;

    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.util.Arrays;

    public class fileInOutput {

    static FileWriter fw = null;
    static FileReader fr = null;
    static File dir = null;
    static File file = null;

    public static void main(String[] args) throws IOException {

    dir = new File("D:/test");

    if (!dir.exists()) {
    dir.mkdir();
    }

    file = new File("D:/test/test.txt");
    fw = new FileWriter("D:/test/test.txt");
    fr = new FileReader("D:/test/test.txt");
    fw.write("Hello,Word!");

    fw.close();

    char[] chars = new char[256];
    int bs = fr.read(chars);
    char[] arr = Arrays.copyOf(chars, bs);
    String str = new String(arr);
    System.out.println(str);

    fr.close();

    if (file.exists()) {
    file.delete();
    }

    if (dir.exists()) {
    dir.delete();
    }

    }

    }


    #Java编程-文件IO操作-文件读写拷贝
    package com.file.qq;

    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;

    public class fileInOutput {

    static FileWriter fw = null;
    static FileReader fr = null;

    public static void main(String[] args) throws IOException {

    fr = new FileReader("D:/test/test.txt");
    fw = new FileWriter("D:/test/test1.txt");

    // int c = 0;
    // while (-1 != (c = fr.read())) {
    // fw.write(c);
    // }

    char[] chars = new char[4];
    int len = 0;
    while (-1 != (len = fr.read(chars))) {
    fw.write(chars, 0, len);
    }

    fr.close();
    fw.flush();
    fw.close();
    }
    }

    #Java编程-文件IO操作-文件读写拷贝-流式(所有含有Stream的都是流)
    package com.file.qq;

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;

    public class fileInOutput {

    public static void main(String[] args) throws IOException {

    FileInputStream fis = null;
    FileOutputStream fos = null;

    fos = new FileOutputStream("D:/test/test1.txt");
    fis = new FileInputStream("D:/test/test.txt");

    // int c = 0;
    // while (-1 != (c = fis.read())) {
    // fos.write(c);
    // }

    //将字符数组中的字符写入到输出流,第二个参数表示从字符数组的哪个索引处开始取字符,第三个参数表示写多少个字符
    byte[] bs = new byte[256];
    int len = 0;
    while (-1 != (len = fis.read(bs))) {
    fos.write(bs, 0, len);
    }

    fis.close();
    fos.flush();
    fos.close();
    }

    }

  • 相关阅读:
    一分钟了解Docker
    RobotFramework
    RobotFramework不同版本优劣势
    从零学习基于Python的RobotFramework自动化
    Python 接口自动化常用方法封装
    (转载)解决MySql 数据库 提示:1045 access denied for user 'root'@'localhost' using password yes
    (转载)html中div使用自动高度
    javascriptDOM对象之scrollTo()方法,滚动到页面指定位置
    CSS3之响应式布局
    Html5NodeJs安装less之千辛万苦CMD系列
  • 原文地址:https://www.cnblogs.com/smallfishy/p/12917194.html
Copyright © 2011-2022 走看看