Java面向物件基礎–IO系統
一、IO
輸入:input
輸出:output
Java的IO主要包含三個部分
- 流式部分:IO的主題部分
- 非流式部分:主要包含一些輔助流式部分的類
- 檔案讀取部分的與安全相關的類以及與本地作業系統相關的檔案系統的類
Java中的流操作分為兩種:

二、File類
File類物件表示磁盤上的檔案或目錄,它提供了與平臺無關的方法來對磁盤上的檔案或目錄進行操作,

代碼實體如下:
import java.io.File;
import java.io.IOException;
public class Tset01 {
public static void main(String[] args) {
File f1 = new File("reba.jpg");
File f2 = new File("g:/reba.jpg");
File f3 = new File("g:/aa");
File f4 = new File("g:/aa/bb");
try {
//創建檔案
boolean b1 = f1.createNewFile();
boolean b2 = f2.createNewFile();
//創建檔案夾
boolean b3 = f3.mkdir();
//創建多個檔案夾
boolean b4 = f4.mkdirs();
if (b1&&b2&&b3&&b4){
System.out.println("創建成功!!!");
}else {
System.out.println("創建失敗???");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
運行結果如下:
、、

三、FileInputStream和FileOutputStream

代碼實體如下:
//復制圖片
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("g:/鎖屏/reba.jpg");
fos = new FileOutputStream("g:/aa/bb/dlrb.jpg");
byte [] b = new byte[1024];
int result=0;
try {
while ((result = fis.read(b))!=-1){
fos.write(b,0,result);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
運行結果如下:

四、BufferedReader和BufferedWriter
BufferedReader與BufferedWriter實作了自帶緩沖區的字符流高效讀寫,其最小操作單元為一個字符(16位) ,同時,我們也可以自己指定緩沖區的大小,默認的緩沖區有8192個字符,通常情況下已經足夠了,
代碼實體1如下:
//設定緩沖區復制圖片
import java.io.*;
public class BufferedInputDemo {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
fis = new FileInputStream("g:/鎖屏/reba.jpg");
bis = new BufferedInputStream(fis);
fos = new FileOutputStream("g:/aa/bb/dlrb1.jpg");
bos = new BufferedOutputStream(fos);
int result = 0;
byte [] b = new byte[2048];
try {
while ((result = bis.read(b))!=-1){
bos.write(b,0,result);
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
bos.close();
bis.close();
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
運行結果如下:

代碼實體2如下:
//帶緩沖區的復制
import java.io.*;
public class BufferedReadDemo {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader("g:/aaa.txt"));
try {
bw = new BufferedWriter(new FileWriter("g:/aa/bb/aaa.txt"));
String temp = null;
while ((temp=br.readLine())!=null){
bw.write(temp);
bw.newLine();
}
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
運行結果如下:

代碼實體3如下:
//使用緩沖區讀取控制臺輸入,寫入檔案
import java.io.*;
public class BufferedRead {
public static void main(String[] args) {
BufferedReader br = null;
BufferedWriter bw = null;
br = new BufferedReader(new InputStreamReader(System.in));
try {
bw = new BufferedWriter(new FileWriter("g:/bb.txt"));
String temp = null;
while ((temp = br.readLine())!=null){
if (temp.equals("quit")){
break;
}
bw.write(temp);
bw.newLine();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
bw.close();
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
運行結果如下:


五、Java字符集
在JVM內部,統一使用基于Unicode字符集的字符編碼
public class EnCoding {
public static void main(String[] args) {
System.out.println(System.getProperty("file.encoding"));
}
}
運行結果如下:

六、PrinterWriter
PrintWriter類和BufferedWriter-樣,也繼承自Writer類,它們的大部分功能是一-樣的,不同的是,BufferedWriter提供了緩沖區,能提供高效的資料寫入,而PrintWriter提供了資料的格式化,例如print(boolean b)、print(char C)、print(double d)及支持任意平臺的換行方法println()等等,這使得我們的程式更加自由
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class PrintWriterDemo {
public static void main(String[] args) {
//通過包裝BufferedWriter創建PrintWriter,檔案位置在當前工程根目錄
//沒有啟用PrintWriter的自動重繪(flush)功能
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("g:/aaa.txt"))) ;
pw.print(" PrintWriter演示") ;
pw.println() ;
pw.println(false) ;
pw.println(3.14) ;
pw.println(new char[]{'a','哦','e','i','u'});
pw.println (new Integer (2009)) ;
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
運行結果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/229164.html
標籤:java
上一篇:水仙花數的判斷(JAVA)
