ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java--IO(输入输出)

2020-01-11 14:40:51  阅读:212  来源: 互联网

标签:java File IO 输入输出 String file public out


导包

java中的“流”都位于java.io包中,称为IO(输入输出)流;

字节流
java.io.InputStream
java.io.OutputStream
字符流
java.io.Reader
java.io.Writer

字节流

常用方法

InputStream
方法说明 功能描述
int read() 从输入流读取一个8位字节,把他转换位0~255之间的整数,并返回一个整数
int read(byte[] b) 从输入流读取若干字节,把他们保存到参数b指定的字节数组中,返回的整数表示读取字节的数目
int read(byte[] b,int off,int len) 从输入流读取若干字节,把他们保存到参数b指定的字节数组中,off指定字节数开始保存没数据的起始下标,len表示读取的字节数目
void close() 关闭此输入流并释放于该流关联的所有系统资源
OutputStream
方法说明 功能描述
void write(int b) 向输出流写入一个字节
void write(byte[] b) 把参数b指定的字节数组的所有字节写到输入流
void write(byte[] b,int off,int len) 将指定byte数组中从偏移量off开始的len个字节写入输入流
void flush() 刷新此输入流并强制写入所有缓冲的输出字节
void close() 关闭此输入流并释放与此流相关的所有系统资源

字节流读写文件

FileInputStream 是 InputStream 的子类 ,它是操作文件的字节输入流,专门用于读取文件的数据

import java.io.*;

public class Temp{
    public static void main(final String[] args) throws Exception {
        final FileInputStream in = new FileInputStream("D:\\myfile\\java\\io\\temp.txt");
        int b = 0;
        while(true){
            b = in.read();
            if(b == -1){
                break;
            }
            System.out.println(b);
        }
        in.close();

    }
}

FileOutputStream 是 OutputStream 的子类,它是操作文件的字节流,专门用于把数据写入文件;向已经存在的文件中增加内容,可使用函数FileOutputStream(String fileName,boolean append)来创建文件传输

//导包
import java.io.FileOutputStream;

public class FileOutputStream_Test{
    public static void main(String[] args) throws Exception{
//        FileOutputStream out = new FileOutputStream("D:\\myfile\\java\\Java\\learn\\temp.txt");
        //向文件中增加内容
        FileOutputStream out = new FileOutputStream("D:\\myfile\\java\\Java\\learn\\temp.txt",true);
        String str = "Angelong";
        byte[] b = str.getBytes();
        for(int i = 0; i < b.length ;i++ ){
            out.write(b[i]);
        }
        out.close();
    }
}

文件的拷贝

import java.io.FileInputStream;     //输入流包
import java.io.FileOutputStream;    //输出流包

public class Copy_test{
    public static void main(String[] args) throws Exception{
        FileInputStream in = new FileInputStream("D:\\myfile\\java\\Java\\learn\\temp.txt");
        FileOutputStream out = new FileOutputStream("D:\\myfile\\java\\Java\\learn\\io\\temp.txt");
        int len;
        while ((len = in.read()) != -1){
            out.write(len);
        }
        in.close();
        out.close();
    }
}

字节流的缓冲区

import java.io.FileInputStream;     //输入流包
import java.io.FileOutputStream;    //输出流包

public class Copy_test{
    public static void main(String[] args) throws Exception{
        FileInputStream in = new FileInputStream("D:\\myfile\\java\\Java\\learn\\temp.txt");
        FileOutputStream out = new FileOutputStream("D:\\myfile\\java\\Java\\learn\\io\\temp.txt");
        int len;
        while ((len = in.read()) != -1){
            out.write(len);
        }
        in.close();
        out.close();
    }
}

字节缓冲流

在IO包中提供两个带缓冲的字节流,分别是BufferedInputStreamBufferedOutputStream , 他们的构造方法分别接收InputStreamOutputStream 类型的参数作为对象,在读写数据时提供缓冲功能;

import java.io.FileInputStream;     //输入流包
import java.io.FileOutputStream;    //输出流包

public class Copy_test{
    public static void main(String[] args) throws Exception{
        FileInputStream in = new FileInputStream("D:\\myfile\\java\\Java\\learn\\temp.txt");
        FileOutputStream out = new FileOutputStream("D:\\myfile\\java\\Java\\learn\\io\\temp.txt");
        int len;
        while ((len = in.read()) != -1){
            out.write(len);
        }
        in.close();
        out.close();
    }
}

字符流

基本用法

两个顶级父类:Reader和Writer
Reader:是字符输入流用于从某个源设备读取字符;
Writer:是字符输入流,用于向某个目标设备写入字符;
重要子类:
FileReader和FileWriter用于读写文件
BufferedReader和BufferedWriter是具有缓冲功能的流,使用它们可以提高读写效率;

字符流操作文件

利用FileReader读取文件

import java.io.FileReader;

public class FileReader_test{
    public static void main(String[] args) throws Exception{
        FileReader reader = new FileReader("D:\\myfile\\java\\Java\\learn\\temp.txt");
        int ch;
        while((ch = reader.read()) != -1){  //读取二进制数据
            System.out.print((char) ch);    //强行转换为char类型
        }
        reader.close();
    }
}

利用FileWriter写入文件

import java.io.FileWriter;

public class FileWriter_test{
    public static void main(String[] args) throws Exception{
        FileWriter witer = new FileWriter("D:\\myfile\\java\\Java\\learn\\temp.txt",true);
        String test = "So hot !";
        witer.write(test);
        witer.write("\r\n");
        witer.close();
    }
}

包装流
BufferedReader用于对字符输入流进行包装
BufferedWriter用于对字符输出流进行包装
注意:BufferedReader中有一个重要的readLine(),该方法用于一次读取一行文本;

import java.io.*;
public class Buff{
	public static void main(String[] args) throws Exception{
		FileReader reader = new FileReader("Temp.txt");
		BufferedReader br = new BufferedReader(reader);
		FileWriter writer = new FileWriter("java.txt");
		BufferedWriter bw = new BufferedWriter(writer);
		String str;
		while ((str = br.readLine()) != null){
			bw.write(str);
			bw.newLine();
		}
		br.close();
		bw.close();
	}
}

File类

File类常用的构造方法

方法声明 功能描述
File(String pathname) 通过指定的一个字符串类型的文件路径来创建一个新的File对象
File(String parent,String child) 根据指定的一个字符串类型的父路径和一个字符串类型的子路径(包括文件、名称)创建一个File对象
File(File parent Strng child) 根据指定的Fie类的父路径和字符串类型的子路径(包括文件名称)创建一个File 对象

File常用方法

方法声明 功能描述
boolean exists() 判断File对象对应的文件或目录是否存在,若存在则返回ture,否则返回false
boolean delete() 删除File 对象对应的文件或目录,若成功删除则返回true,否则返回false
boolean createNewFile() 当File对象对应的文件不存在时,该方法将新建一个此File对象所指定的新文件,若创建成功则返回true,否则返回false
String getName() 返回File对象表示的文件或文件夹的名称
getPath() 返回File对象对应的路径
String getAbsolutePath 返回File对象对应的绝对路径(在UNIX/Linux等系统上,如果路径是以正斜线/开始的;则这个路径是绝对路径;在Windows等系统上,如果路径是从盘符开始的,则这个路)
String getParent() 返回File对象对应目录的父目录(即返回的目录不包含最后一级子目录)
boolean canRead() 判断File 对象对应的文件或目录是否可读,若可读则返回true,反之返回 false
boolean canWrite() 判断File 对象对应的文件或目录是否可写,若可写则返回true,反之返回false
boolean isFile() 判断File对象对应的是否是文件(不是目录),若是文件则返回true,反之返回false
boolean isDirectory() 判断 File 对象对应的是否是目录(不是文件),若是目录则返回true,反之返回false
boolean isAbsolute() 判断 File对象对应的文件或目录是否是绝对路径
long lastModified() 返回1970年1月1日0时0分0秒到文件最后修改时间的毫秒值
long length() 返回文件内容的长度
String[]list() 列出指定且录的全部内容,只是列出名称
File[]listFiles() 返回一个包含了File 对象所有子文件和子目录的File数组
Select_File.java
import java.io.File;
import java.io.IOException;

public class Select_File{
    public static void main(String[] args){
        File file = new File("D:\\myfile\\java\\Java\\learn\\Temp.txt");
        //获取文件名称
        System.out.println("File name:" + file.getName());
        //获取相对路径
        System.out.println("File path:" + file.getPath());
        //获取绝对路径
        System.out.println("File absolute:" + file.getAbsolutePath());
        //获取文件父路径
        System.out.println("File parent:" + file.getParent());
        //判断文件是否可读
        System.out.println(file.canRead()?"Read yes":"Read no");
        //判断文件是否可读
        System.out.println(file.canWrite()?"Writer yes":"Writer no");
        //判断是否是一个文件
        System.out.print(file.isFile()?"is a file":"not a file");
        //判断是否是一个目录
        System.out.print(file.isDirectory()?"is dirctory":"not dirctory");
        //判断是否是一个绝对路径
        System.out.print(file.isAbsolute()?"is absolute":"not absolute");
        //获得文件最后的修改时间
        System.out.println("Modified lost time:" + file.lastModified());
        //获取文件大小
        System.out.print("File size:" + file.length()+"bytes");
        //是否成功删除
        System.out.print("Delete File is:" + file.delete());
    }
}
遍历目录下的文件

Find_File.java

import java.io.File;

public class Find_File{
    public static void main(String[] args){
        File file = new File("D:\\myfile");
        //判断是否是一个目录
        System.out.println("is Directory:" + file.isDirectory());
        if(file.isDirectory()){         //如果是一个目录
            String[] names = file.list();   //获取目录下的所有文件名
            for(String name : names){   
                System.out.println(name);      //输出所有文件名
            }
        }
    }
}
删除文件及目录

仅删除文件

import java.io.*;

public class Delete_File{
    public static void main(String[] margs){
        File file = new File("D:\\新建文本文档.txt");
        if(file.exists()){
            System.out.println(file.delete());
        }
    }
}

删除文件及目录

import java.io.*;

public class Delete_Drectory{
    public static void main(String[] args){
        File file = new File("D:\\myfile\\java\\learn");
        deleteDir(file);
    }
    public static void deleteDir(File dir){
        if(dir.exists()){
            File[] files = dir.listFiles();
            for(File file : files){
                if(file.isDirectory()){
                    deleteDir(file);
                }else{
                    file.delete();
                }
            }
            dir.delete();
        }
    }
}
Angelong! 发布了9 篇原创文章 · 获赞 0 · 访问量 91 私信 关注

标签:java,File,IO,输入输出,String,file,public,out
来源: https://blog.csdn.net/weixin_44439071/article/details/103920758

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有