博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java文件操作与输入输出流
阅读量:6232 次
发布时间:2019-06-21

本文共 4781 字,大约阅读时间需要 15 分钟。

文件操作

package ch15;import java.io.*;/** * Created by Jiqing on 2016/12/28. */public class FileTest {    public static void main(String[] args) throws IOException{        // 以当前路径创建一个File对象        File file = new File(".");        System.out.println(file.getName());        // 获取相对路径        System.out.println(file.getParent());        // 获取绝对路径        System.out.println(file.getAbsoluteFile()); //C:\Users\e550\IdeaProjects\crazyJava\.        // 获取上级路径        System.out.println(file.getAbsoluteFile().getParent()); //C:\Users\e550\IdeaProjects\crazyJava        // 在当前路径下创建一个临时文件        File tmpFile = File.createTempFile("temp",".txt",file);        // 指定当JVM退出时删除文件        tmpFile.deleteOnExit();        // 使用list()方法列出当前路径下所有文件和路径        String[] fileList = file.list();        System.out.println("====当前路径下所有文件和路径如下====");        for (String fileName :fileList) {            System.out.println(fileName);        }        // listRoots() 静态方法列出所有磁盘根路径        File[] roots = File.listRoots();        for(File root:roots) {            System.out.println(root);        }    }}

执行结果:

. null C:\Users\e550\IdeaProjects\crazyJava. C:\Users\e550\IdeaProjects\crazyJava 当前路径下所有文件和路径如下 .git .idea crazyJava.iml image out src temp108678927822844352.txt C:

D:
E:
F:\

方法论:尝试自己改造一下,能够加深对内容的理解。

Java可以读取并操作文件,还是蛮厉害的。

Java中的IO流

在Java中把不同的输入输出源(键盘、文件、网路连接)抽象表述为“流”。

1.输入流、输出流

2.字节流、字符流

字节流通过InputStream和OutputStream来操作,数据单元是8位的字节

字符流通过Reader和Writer来操作,数据单元是16位的字符

3.节点流、处理流

处理流可以包装节点流进行数据传输,通过处理流,Java程序无需理会输入输出节点是磁盘、网络还是其他输入输出设备,程序只要将节点包装成处理流,就可以使用相同的输入、输出代码来读不通的输入输出设备的数据。

package ch15;import java.io.*;/** * Created by Jiqing on 2016/12/28. */public class FileInputStreamTest {    public static void main(String[] args) throws IOException {        File file = new File(".");        // 创建字节输入流        FileInputStream fis = new FileInputStream(file.getAbsoluteFile().getParent()+"/src/ch15/FileInputStreamTest.java");        // 创建一个长度为1024的竹筒        byte[] bbuf = new byte[1024];        // 保存实际读取的字节数        int hasRead = 0;        // 使用循环来重复“取水”        while ((hasRead = fis.read(bbuf)) > 0) {            // 取出竹筒中的水滴            System.out.print(new String(bbuf,0,hasRead));        }        // 关闭文件输入流        fis.close();    }}

package ch15;import java.io.*;/** * Created by Jiqing on 2016/12/28. */public class FileReaderTest {    public static void main(String[] args) throws IOException {        File file = new File(".");        try(            // 创建字符输入流,输入到内存            FileReader fr = new FileReader(file.getAbsoluteFile().getParent()+"/src/ch15/FileReaderTest.java"))        {            // 创建一个长度为32的竹筒            char[] cbuf = new char[32];            // 用于保存实际读取的字符数            int hasRead = 0;            // 使用循环来重复取水            while ((hasRead = fr.read(cbuf)) > 0) {                System.out.print(new String(cbuf,0,hasRead));            }        }        catch (IOException ex) {            ex.printStackTrace();        }    }}

竹筒的长度只要大于单位长度即可,32表示一次装入的字符数

package ch15;import java.io.*;/** * Created by Jiqing on 2016/12/28. */public class FileInputStreamTest {    public static void main(String[] args) throws IOException {        File file = new File(".");        // 创建字节输入流        FileInputStream fis = new FileInputStream(file.getAbsoluteFile().getParent()+"/src/ch15/FileInputStreamTest.java");        FileOutputStream fos = new FileOutputStream("newFile.txt");        // 创建一个长度为1024的竹筒        byte[] bbuf = new byte[128];        // 保存实际读取的字节数        int hasRead = 0;        // 使用循环来重复“取水”        while ((hasRead = fis.read(bbuf)) > 0) {            // 取出竹筒中的水滴//            System.out.println(hasRead);//            System.out.print(new String(bbuf,0,hasRead));            fos.write(bbuf,0,hasRead);        }        // 关闭文件输入流        fis.close();    }}

package ch15;import java.io.*;/** * Created by Jiqing on 2016/12/28. */public class FileReaderTest {    public static void main(String[] args) throws IOException {        File file = new File(".");        try(            // 创建字符输入流,输入到内存            FileReader fr = new FileReader(file.getAbsoluteFile().getParent()+"/src/ch15/FileReaderTest.java");            FileWriter fw = new FileWriter("newWriterFile.txt")        )        {            // 创建一个长度为32的竹筒            char[] cbuf = new char[32];            // 用于保存实际读取的字符数            int hasRead = 0;            // 使用循环来重复取水            while ((hasRead = fr.read(cbuf)) > 0) {//                System.out.println(hasRead);//                System.out.print(new String(cbuf,0,hasRead));                fw.write(cbuf,0,hasRead);            }        }        catch (IOException ex) {            ex.printStackTrace();        }    }}

流就是水滴,有意思。输入流,从文件输入到内存。输出流,从内存输出到硬盘。输入,表示读取数据。输出,表示写入数据。

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/6231290.html,如需转载请自行联系原作者

你可能感兴趣的文章
【工具使用系列】关于 MATLAB 遗传算法与直接搜索工具箱,你需要知道的事
查看>>
Kali-linux Arpspoof工具
查看>>
PDF文档页面如何重新排版?
查看>>
基于http协议使用protobuf进行前后端交互
查看>>
bash腳本編程之三 条件判断及算数运算
查看>>
php cookie
查看>>
linux下redis安装
查看>>
弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言
查看>>
JavaScript 数据类型
查看>>
量子通信和大数据最有市场突破前景
查看>>
对‘初学者应该选择哪种编程语言’的回答——计算机达人成长之路(38)
查看>>
如何申请开通微信多客服功能
查看>>
Sr_C++_Engineer_(LBS_Engine@Global Map Dept.)
查看>>
非监督学习算法:异常检测
查看>>
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>