Java基础学习笔记(十一)I/O 文件访问
2010-12-30 13:38
603 查看
昨天只看了点线程部分的内容,今天还是按计划学习I/O部分,线程的其他部分等I/O学完了在继续看。
按数据流的方向不同可以分为 输入流 和 输出流。按处理数据单位不同可以分为 字节流 和 字符流。按照功能不同可以分为 节点流 和 处理流所有的流类型位于java.io内都分别继承以下四种抽象类; 字节流 字符流输入流 :InputStream Reader输出流 :OutputStream WriterI/O类中以Stream结尾的都是字节流,Reader/Writer结尾的都是字符流。
FileInputStream(File file) throws FileNotFountException
FileOutputStream(String name) throws FileNotFountException
FileOutputStream(File file) throws FileNotFountException
FileOutputStream(File file, boolean append) throws FileNotFountException
FileInputStream和FileOutputStream类支持其父类InputStream和OutputStream所提供的数据读写方法。在实例化FileInputStream和FileOutputStream流时要用try-catch语句处理其可能抛出的FileNotFoundException,在读写数据时也要用途try-catch语句处理可能抛出的IOException。
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
try{
in = new FileInputStream("c:/TestFileInputStream.java");
}catch(FileNotFoundException e){
System.out.println("找不到指定文件");
System.exit(-1);
}
try{
long num = 0;
while((b = in.read())!=-1){ //read()方法读取一个字节,返回类型是int
System.out.print((char)b);//read()方法读取中文字符时是乱码,因为中文是两个字节的。
num++;
}
in.close();
System.out.println();
System.out.println("共读取了" + num + "个字节");
}catch(IOException e1){
System.out.println("文件读取错误");
System.exit(-1);
}
}
}
public class TestFileOutputStream{
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
FileOutputStream out = null;
try{
in = new FileInputStream("c:/TestFileInputStream.java");
out = new FileOutputStream("c:/test.txt"); //没有的时候自动创建文件
while((b = in.read())!= -1){
out.write(b);
}
in.close();
out.close();
}catch (FileNotFoundException e2){
System.out.println("找不到指定文件");
System.exit(-1);
}catch (IOException e1){
System.out.println("文件复制错误");
System.exit(-1);
}
System.out.println("文件已复制");
}
}
public class TestFileReader{
public static void main(String[] args){
FileReader r = null;
int c;
try{
r = new FileReader("c:/TestFileReader.java");
while((c = r.read())!= -1){ //read()方法读取字符返回int类型
System.out.print((char)c);
}
r.close();
}catch(FileNotFoundException e1){
System.out.println("找不到指定文件"); //中文不会出现乱码
}catch(IOException e2){
System.out.println("文件读取错误");
}
}
}
public static void main(String[] args){
FileWriter fw = null;
try{
fw = new FileWriter("c:/unicode.txt");
for(int i = 0;i < 5000;i ++){
fw.write(i); //写字符,两个字节
}
fw.close();
}catch(IOException e1){
e1.printStackTrace();
System.out.println("文件写入错误");
System.exit(-1);
}
System.out.println("文件写入成功");
}
}
I/O分类:
从不同的角度分类:按数据流的方向不同可以分为 输入流 和 输出流。按处理数据单位不同可以分为 字节流 和 字符流。按照功能不同可以分为 节点流 和 处理流所有的流类型位于java.io内都分别继承以下四种抽象类; 字节流 字符流输入流 :InputStream Reader输出流 :OutputStream WriterI/O类中以Stream结尾的都是字节流,Reader/Writer结尾的都是字符流。
访问文件:FileInputStream与FileOutputStream
FileInputStream和FileOutputStream分别继承自InputStream和OutputStream用于向文件中输入和输出字节。构造方法:FileInputStream(String name) throws FileNotFountExceptionFileInputStream(File file) throws FileNotFountException
FileOutputStream(String name) throws FileNotFountException
FileOutputStream(File file) throws FileNotFountException
FileOutputStream(File file, boolean append) throws FileNotFountException
FileInputStream和FileOutputStream类支持其父类InputStream和OutputStream所提供的数据读写方法。在实例化FileInputStream和FileOutputStream流时要用try-catch语句处理其可能抛出的FileNotFoundException,在读写数据时也要用途try-catch语句处理可能抛出的IOException。
FileInputStream类的使用实例:
public class TestFileInputStream{public static void main(String[] args){
int b = 0;
FileInputStream in = null;
try{
in = new FileInputStream("c:/TestFileInputStream.java");
}catch(FileNotFoundException e){
System.out.println("找不到指定文件");
System.exit(-1);
}
try{
long num = 0;
while((b = in.read())!=-1){ //read()方法读取一个字节,返回类型是int
System.out.print((char)b);//read()方法读取中文字符时是乱码,因为中文是两个字节的。
num++;
}
in.close();
System.out.println();
System.out.println("共读取了" + num + "个字节");
}catch(IOException e1){
System.out.println("文件读取错误");
System.exit(-1);
}
}
}
FileOutputStream使用实例:
import java.io.*;public class TestFileOutputStream{
public static void main(String[] args){
int b = 0;
FileInputStream in = null;
FileOutputStream out = null;
try{
in = new FileInputStream("c:/TestFileInputStream.java");
out = new FileOutputStream("c:/test.txt"); //没有的时候自动创建文件
while((b = in.read())!= -1){
out.write(b);
}
in.close();
out.close();
}catch (FileNotFoundException e2){
System.out.println("找不到指定文件");
System.exit(-1);
}catch (IOException e1){
System.out.println("文件复制错误");
System.exit(-1);
}
System.out.println("文件已复制");
}
}
FileReader和FileWriter
FileReader、FileWriter与上面两个类的方法基本相同,只是在后两者里,读取和写入的是字符,即两字节。FileReader例子:
import java.io.*;public class TestFileReader{
public static void main(String[] args){
FileReader r = null;
int c;
try{
r = new FileReader("c:/TestFileReader.java");
while((c = r.read())!= -1){ //read()方法读取字符返回int类型
System.out.print((char)c);
}
r.close();
}catch(FileNotFoundException e1){
System.out.println("找不到指定文件"); //中文不会出现乱码
}catch(IOException e2){
System.out.println("文件读取错误");
}
}
}
FileWriter例子:
import java.io.*;public class TestFileWriter{public static void main(String[] args){
FileWriter fw = null;
try{
fw = new FileWriter("c:/unicode.txt");
for(int i = 0;i < 5000;i ++){
fw.write(i); //写字符,两个字节
}
fw.close();
}catch(IOException e1){
e1.printStackTrace();
System.out.println("文件写入错误");
System.exit(-1);
}
System.out.println("文件写入成功");
}
}
相关文章推荐
- Java基础学习笔记之XML文件操作
- java jvm学习笔记十一(访问控制器)
- java基础学习笔记——I/O文件切割与合并
- 【Java学习笔记】基础知识学习14【文件】
- salesforce 零基础学习(五十五)java通过SOAP方式定时访问某个文件然后插入到sObject中
- java之jvm学习笔记十一(访问控制器)
- 【安卓学习笔记】JAVA基础-字符流及打文件的读写
- 【Java学习笔记】基础知识学习18【一个小文件的复制方法】
- 【Java学习笔记】基础知识学习19【一个大文件的复制方法】
- java基础-用IO演示文件的复制过程(学习笔记)
- 黑马程序员--Java基础学习笔记【参数传递、访问控制符、内部类】
- 【Java学习笔记】27:文件的随机访问&对象流
- java之jvm学习笔记十一(访问控制器)
- Java基础学习笔记十一 Eclipse开发工具
- 黑马程序员——JAVA学习笔记十一(文件操作File)
- Java I/O 学习笔记(5) 随机访问文件
- Java IO ---学习笔记(文件操作与随机访问文件)
- 【Java学习笔记】基础知识学习17【文件文本读取写入】
- java 从零开始,学习笔记之基础入门<servlet_文件下载>(二十七)
- 黑马程序员_毕向东_Java基础视频教程学习笔记(十一)