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

相關文章
相關標籤/搜索