java基础Day10 io流
文件的操作——构造对象
File类
File类的构造函数
File(String pathname)
例:
File f1 = new File(“c:\temp\abd.txt”);
File f2 = new File(“c:/temp/abc.txt”);
注:字符串中使用"“符号,是因为”“属于转义字符,所以在字符串中要使用真正的”“符号需要先去输入两个”\"。Linux中系统目录分隔符是"/"。
File(String parent,String child)
例:File f3 = new File(“c:/temp”,“abc.txt”);
File(File parent,String child)
例:File f4 = new File(“c:/temp”);
File f5 = new File(f4,“abc.txt”);
编写代码实现文件的操作,输出以下文件信息:
输出结果:
文件名:xxx.txt
文件路径:c:\1.txt
绝对路径:c:\1.txt
父文件夹名称:c:
文件是否可写:
文件是否可读:
文件最后修改时间:1122277108000
文件大小:XXX Byte
import java.io.File;
import java.io.IOException;
/**
- @ClassName: Demo10_01
- @Description: 输出结果:
文件名:xxx.txt
文件路径:c:\1.txt
绝对路径:c:\1.txt
父文件夹名称:c:
文件是否可写:
文件是否可读:
文件最后修改时间:1122277108000
文件大小:XXX Byte - @author HanCheng
- @date 2020-02-27 09:40:37
*/
public class Demo10_01 {
public static void main(String[] args) {
File file = new File(“e:\java测试\Demo10”);
File f = new File(“e:\java测试\Demo10\Demo10.txt”);
File f1 = new File(“e:\”);
if(!file.exists()) {
file.mkdir();
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(“文件名:”+f.getName());
System.out.println(“文件路径:”+f.getPath());
System.out.println(“绝对路径:”+f.getAbsolutePath());
System.out.println(“父文件夹名称:”+f.getParent());
if(f.canWrite()) {
System.out.println(“文件是否可写:可写”);
}else {
System.out.println(“文件是否可写:不可写”);
}
if(f.canRead()) {
System.out.println(“文件是否可读:可读”);
}else {
System.out.println(“文件是否可读:不可读”);
}
System.out.println(“文件最后修改时间:”+f.lastModified());
System.out.println(“文件大小:”+f.length()+“byte”);
}
}
流
Source----information—reads—》program(字节)
program—writes—information—》dest(字节)
java流的分类
字节流(1字节)
8位
InputStream OutputStream
没有缓冲区,直接以byte存储
字符流(2字节)
16位Unicode
Reader Writer
有缓冲区,需要关闭流强制刷新
文件的读写
读
FileInputStream,FileReader
写
FileOutputStream,FileWriter
InputStream定义的方法
OutputStream定义的方法
文件输入流(FileInputStream)
FileInputStream类创建一个能从文件读取字节的InputStream类,它的两个常用构造方法:
FileInputStream(String filepath)
FileInputStream(File fileObj)
这两个构造方法都能引发FileNotFoundException异常。这里,filepath是文件的绝对路径,fileObj是描述该文件的File对象。
例子:
InputStream f0 = new FileInputStream(“c:\test.txt”);
File f = new File(“c:\test.txt”);
InputStream f1 = new FileInputStream(f);
尽管第一个方法可能更长用到,而第二个构造方法则允许在把文件赋给输入流之前用file方法更进一步检查文件。当一个FileInputStream被创建时,它可以被公开读取。
文件输出流(FileOutputStream)
FileOutputStream创建了一个可以向文件写入字节的类OutputStream,它常用的构造方法如下:
FileOutputStream(String filePath)
FileOutputStream(File fileObj)
FileOutputStream(String filePath,boolean append)
它们可以引发IOException或SecurityException异常。
这里filePath是文件的绝对路径,fileObj是描述该文件的File对象。
如果append为true,文件则以设置搜索路径模式打开。
FileOutputStream的创建不依赖于文件是否存在。在创建对象时,FileOutputStream会在打开输出文件之前就创建它。这种情况如果试图打开一个只读文件,会引发IOException异常。
Reader定义的方法
FileReader与FileWriter
FileReader类创建了一个可以读取文件内容的Reader类。
它常用的构造方法:
FileReader(String filePath)
FileReader(File Obj)
FileWriter创建一个可以写文件的Writer类。
它最常用的构造方法:
FileWriter(String filePath)
FileWriter(String filePath,boolean append)
FileWriter(File fileObj)
这里,filePath是一个文件的完整路径,fileObj是描述该文件的File对象如果append为true,输出是附加到文件尾的。FileWriter类的创建不依赖于文件存在与否。在创建文件之前,FileWriter将在创建对象时打开它来作为输出,如果试图打开一个只读文件,将引发一个IOException异常。
System.in和System.out
为了支持标准输入输出设备,Java定义了两个特殊的流对象System.in和System.out。
System.in对应键盘,是InputStream类型的,程序使用System.in可以读取从键盘上输入的数据;
System.out对应显示器,是PrintStream类型,PrintStream是OutputStream的一个子类,程序使用System.out可以将数据输出到显示器上。
键盘可以被当做一个特殊的输入流,显示器可以被当做一个特殊的输出流