Java之IO主要操做

Java IO主要可分为两部分,一部分是对文件自己的操做,一部分是对文件内容的操做。
1、对文件自己操做
       该部分所对应的主要类是File,主要操做以下:
package com.ass;

import java.io.File;
import java.io.IOException;

public class FileTest {
	public static void main(String[] args) throws IOException {
		File file = new File("E://test.txt");
		System.out.println("文件是否可执行:" + file.canExecute());
		System.out.println("文件是否可读取:" + file.canRead());
		System.out.println("文件是否可写入:" + file.canWrite());
		System.out.println("文件是否可存在:" + file.exists());
		System.out.println("获取文件真是路径:" + file.getAbsolutePath());
		System.out.println("获取文件父路径:" + file.getParent());
		System.out.println("判断是不是文件夹:" + file.isDirectory());
		System.out.println("设置文件为只读权限:" + file.setReadOnly());
		System.out.println("设置文件读权限:" + file.setReadable(true));
		System.out.println("设置文件写读权限:" + file.setWritable(true));
		System.out.println("设置文件可执行权限:" + file.setExecutable(true));
	}
}
其余操做可查看jdk文档
2、对文件内容进行操做
       (一)、经过字节流操做文件内容
         该操做主要由抽象类java.io.InputStream及其子类,抽象类java.io.OutputStream及其子类进行。
         一、输入流
         InputStream(输入流-抽象类)->FileInputStream(文件输入流)
                                                      ->BufferedInputStream(缓存输入流-效率高)
         主要由以上三个类组成,基本操做以下:
package com.ass.io;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class FileInputOpt {

	public static void main(String[] args) throws IOException {

		// 使用InputStream
		// InputStream i=System.in;
		// int tempStr1=0;
		// while ((tempStr1=i.read()) != -1) {
		// System.out.print((char)tempStr1);
		// }
		// i.close();

		// 使用FileInputStream
		File file = new File("E://test.txt");
		FileInputStream in = new FileInputStream(file);
		int tempStr2 = 0;
		System.out.println("FileInputStream s");
		while ((tempStr2 = in.read()) != -1) {
			System.out.print((char) tempStr2);
		}
		in.close();
		System.out.println();
		System.out.println("FileInputStream e");

		BufferedInputStream bu = new BufferedInputStream(new FileInputStream(file));
		int tempStr3 = 0;
		System.out.println("BufferedInputStream s");
		while ((tempStr3 = bu.read()) != -1) {
			System.out.print((char) tempStr3);
		}
		bu.close();
		System.out.println();
		System.out.println("BufferedInputStream e");

	}

}
二、输出流
      OutputStream(输出流-抽象类)->FileOutputStream(文件输出流)
                                                     ->BufferedOutputStream(缓存输出流-效率高)
      主要由以上三个类组成,基本操做以下:
package com.ass.io;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class FileOutputOpt {

	public static void main(String args[]) throws IOException {

		
		OutputStream out=null;
//		out=new FileOutputStream(new File("E://test.txt"));  // 使用FileOutputStream
		out=new BufferedOutputStream(new FileOutputStream(new File("E://test.txt")));  //使用BufferedOutputStream
		out.write("test".getBytes());
		out.write("\r\n".getBytes());
		out.write("test1".getBytes());
	}

}
(二)、经过字符流对文件内容进行操做
       (1)、输入流
                  Reader(字符流-抽象类)->FileReader(文件字符流)
                                                       ->BufferedReader(缓存字符流)
                                                       ->LineNumberReader(缓存字符流->可获取行号)
               主要由以上4个类构成,具体操做以下:
package com.ass.io;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;

public class FileInputCharOpt {

	public static void main(String args[]) {

		// 使用FileReader
		try {
			FileReader fileReader = new FileReader(new File("E://test.txt"));
			int read;
			System.out.println("FileReader s:");
			while ((read = fileReader.read()) != -1) {
				System.out.print((char) read);
			}
			System.out.println();
			System.out.println("FileReader e:");
			fileReader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 使用BufferedReader
		try {
			BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("E://test.txt")));
			System.out.println("BufferedReader s:");
			String strTemp = "";
			while ((strTemp = bufferedReader.readLine()) != null) {
				System.out.println(strTemp);
			}
			System.out.println("BufferedReader e:");
			bufferedReader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 使用LineNumberReader,有获取行号的方法
		try {
			LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(new File("E://test.txt")));
			System.out.println("LineNumberReader s:");
			String strTemp = "";
			while ((strTemp = lineNumberReader.readLine()) != null) {
				System.out.println("内容:" + strTemp);
				System.out.println("行号:" + lineNumberReader.getLineNumber());
			}
			System.out.println("LineNumberReader e:");
			lineNumberReader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 使用读取器InputStreamReader,可将输入流转换为读取器(注:目前没有遇到在哪能够用这种状况)
		try {
			LineNumberReader lineNumberReader = new LineNumberReader(new InputStreamReader(System.in));
			System.out.println("LineNumberReader s:");
			String strTemp = "";
			while ((strTemp = lineNumberReader.readLine()) != null) {
				System.out.println("内容:" + strTemp);
				System.out.println("行号:" + lineNumberReader.getLineNumber());
			}
			System.out.println("LineNumberReader e:");
			lineNumberReader.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}
(2)、输出流
              Writer(字符流-抽象类)->FileWriter(文件字符流流)
                                                ->BufferedWriter(缓存字符流)             
            主要由以上两个类构成,具体操做以下:
package com.ass.io;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileOutputCharOpt {

	public static void main(String[] args) {
		// 使用FileWriter操做文件
		try {
			FileWriter fileWriter = new FileWriter(new File("E://test.txt"));
			fileWriter.write("test");
			fileWriter.write("\r\n");
			fileWriter.write("test1");
			fileWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 使用BufferedWriter操做文件
		try {
			BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(new File("E://test.txt")));
			bufferedWriter.write("test");
			bufferedWriter.newLine();
			bufferedWriter.write("test1");
			bufferedWriter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
(三)、随机访问文件(RandomAccessFile)
            该类能够对进行随机的读写操做,操做方法可查看API文档,注意其构造方法传参:
            **构造方法中mode传r表明读,rw表明写,具体可看源码**
   (四)、标准输出:
             PrintStream(处理字节强)
             PrintWirter(处理字符强)
            具体操做方法可查看API文档,这儿就不一一介绍。

后记:主要为了方便之后使用,本文若是有不正确之处请多多指教。java

相关文章
相关标签/搜索