输入和输出处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入输出(java.io)
1.File (java.io.File)
2.流Stream
3.InputStream(抽象类)
4.OutputStream(抽象类)
5.Reader(抽象类)
6.Writer(抽象类)
7.文本文件的读写
FileInputStream
FileOutputStream
BufferedReader
BufferedWriter
8.二进制文件的读写
DataInputStream
DataOutputStream
综合练习
9.标准I/O
(ng.System三个静态遍历System.in , System.out , System.err)
10.重定向标准I/O
11.对象序列化
反序列化
File
例:File file = new File(“c:\\练习\\ test.txt”);\\两个\\是为了输出斜杆File file = new File(“c:\\练习” ,“test.txt”);
如果不确定是“/”还是“\”,使用File.separator静态成员来判断。
JAVA IO 错误,设备没有足够空间
出错在java.io.FileOutputStream.writeBytes方法,
java.io.FileOutputStream.write(FileOutputStream.java第257行)
java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java第69行)
java.io.BufferedOutputStream.flush(BufferedOutputStream.java第127行)
例题://实例化File类的对象
File file = new File("g:\\测试\\test.txt");
//查看文件属性
System.out.println("文件名:" + file.getName());
System.out.println("相对路径:" + file.getPath());
System.out.println("绝对路经:" + file.getAbsolutePath());
System.out.println(file.exists()?"文件存在":"文件不存在");
System.out.println(file.isFile()?"是普通文件":"可能是一个命名管道");
System.out.println(file.isDirectory()?"文件是目录":"文件不是目录");
//判断文件是否可读
if(file.canRead()){
System.out.println("当前文件可读");
}else{
System.out.println("当前文件不可读");
}
//判断文件是否可写
if(file.canWrite()){
System.out.println("当前文件可写");
}else{
System.out.println("当前文件不可写");
}
//当前文件最后一次被修改日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date(stModified());
System.out.println("最后一次被修改日期:" + sdf.format(date));
//新建文件
if(!file.exists()){
file.createNewFile();
}
//删除文件
if(file.exists()){
file.delete();
}
流Stream(流具有方向性,一个流是一个输入或输出设备的抽象表示)
输入流图
输出流图
InputStream
OutputStream
Reader
Writer
文本文件的读写
1.用FileInputStream读写文本文件
2.用FileOutputStream读写文本文件
3.用BufferedReader读写文本文件
4.用BufferedWriter读写文本文件
FileInputStream
构造方法:
实例:
/**
* FlieInputStream
* 1.read()读取文件内容,返回int值
* 2.需要转换字符
* 3.read()方法是“单程”
* 4.一定要关闭流,因为内存不能自动回收
*/
public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("g:\\my\\test.txt");
int data;
System.out.println("可读取的字节数:" + fis.available());
System.out.println("=====开始文件内容=====");
while((data=fis.read()) != -1){
char c = (char)data;//需要转换字符
System.out.print(c + " ");
}
System.out.println("\n===文件内容读取完毕====");
fis.close();
}