文件操作

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();
        }
    }
}

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

Java文件操作与输入输出流的更多相关文章

  1. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  2. 14、Java文件操作stream、File、IO

    1.文件操作涉及到的基本概念 File File类 是文件操作的主要对象中文意义就是 文件 顾名思意 万物皆文件,在计算上看到的所有东西都是文件保存,不管是你的图片.视频.数据库数据等等都是按照基本的 ...

  3. Java 文件操作大全

    Java 文件操作大全 //1.创建文件夹 //import java.io.*; File myFolderPath = new File(str1); try { if (!myFolderPat ...

  4. JAVA文件操作类和文件夹的操作代码示例

    JAVA文件操作类和文件夹的操作代码实例,包括读取文本文件内容, 新建目录,多级目录创建,新建文件,有编码方式的文件创建, 删除文件,删除文件夹,删除指定文件夹下所有文件, 复制单个文件,复制整个文件 ...

  5. java文件操作(普通文件以及配置文件的读写操作)

    转自:java文件操作(普通文件以及配置文件的读写操作) 读取普通文件 : /** * xiangqiao123欢迎你 如果对代码有疑问可以加qq群咨询:151648295 * * 读取MyFile文 ...

  6. Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比

    Java文件操作API功能与Windows DOS命令和Linux Shell 命令类比: Unix/Linux (Bash) Windows(MS-DOS) Java 进入目录 cd cd - 创建 ...

  7. Java第九次作业--输入输出流和文件操作

    Deadline: 2017-5-25 23:00 一.学习要点 认真看书并查阅相关资料,掌握以下内容: 掌握使用File类访问文件 掌握IO操作的基本原理 掌握字节流和字符流读写文件的操作 二.作业 ...

  8. Java精选笔记_IO流(字节流、InputStream、OutputStream、字节文件、缓冲区输入输出流)

    字节流 操作图片数据就要用到字节流. 字符流使用的是字符数组char[],字节流使用的是字节数组byte[]. 字节流读写文件 针对文件的读写,JDK专门提供了两个类,分别是FileInputStre ...

  9. java 文件操作 读取字节级数据(读取)

    package com.swust; import java.io.*; /* * 功能:按照双精度浮点型.整型.布尔型.字符型.和字符串型的顺序从名为sample.dat文件读取数据 * 分析:用F ...

随机推荐

  1. oracle: tochar(sysdate,'D')函数

    学习oracle时碰到tochar(sysdate,'D')函数,但是发现并不是星期几,如今天是20150317,周二,但是得到的值为3 开始以为是系统日期什么的原因,试了试 select to_ch ...

  2. HttpURLConnection请求

    方法调用: //测试 public static void main(String[] args) { Map map = new HashMap(); map.put("type" ...

  3. C++程序设计(一)

    1. 函数指针 程序运行期间,每个函数都会占用一段连续的内存空间.而函数名就是该函数所占内存区域的起始地址(也称"入口地址").我们可以将函数的入口地址赋给一个指针变量,使该指针变 ...

  4. Zabbix通过percona监控MySQL

    因为Zabbix自带的MySQL监控没有提供可以直接使用的Key,所以一般不采用,业界的同学们都使用Percona Monitoring Plugins 监控 MySQL的方式 Percona介绍 P ...

  5. SQL系统视图表

    SQL系统视图表 )) + '学年' + ss.Name AS listtext, sc.SchoolId FROM dbo.SchoolCalendar AS sc INNER JOIN dbo.S ...

  6. struts 初体验

    1. 什么是Struts2 struts2是以WebWork的设计思想为核心,吸收了Struts1的部分有点,建立了兼容WebWork和Struts1的MVC框架. 1.1 WebWork: 强调系统 ...

  7. 【转】PowerShell入门(七):管道——在命令行上编程

    转至:http://www.cnblogs.com/ceachy/archive/2013/02/22/PowerShell_Pipeline.html 管道对于Shell来说是个化腐朽为神奇的东西, ...

  8. Mac下安装LNMP(Nginx+PHP5.6)环境

    [转自:http://avnpc.com/pages/install-lnmp-on-osx] 安装Homebrew 最近工作环境切换到Mac,所以以OS X Yosemite(10.10.1)为例, ...

  9. pyenv ipython jupyter

    pyenv pyenv  依赖安装 yum -y install git gcc make patch zlib-devel gdbm-devel openssl-devel sqlite-devel ...

  10. oracle和mysql获取当前时间的不同

    在oracle中:select sysdate from dual,而且必须加上from dual,否则报错,只支持sysdate ,和mysql不一样,mysql的是sysdate()函数: 在my ...