Java中使用IO(輸入輸出)來讀取和寫入,讀寫設備上的數據、硬盤文件、內存、鍵盤......,根據數據的走向可分為輸入流和輸出流,這個走向是以內存為基准的,即往內存中讀數據是輸入流,從內存中往外寫是輸出流。
根據處理的數據類型可分為字節流和字符流
1.字節流可以處理所有數據類型的數據,在java中以Stream結尾
2.字符流處理文本數據,在java中以Reader和Writer結尾。
我們來看個IO流的詳解圖:

IO流的本質是對字節和字符的處理,那么我們平時也是用來處理文件的,就從文件處理開始接觸這方面的知識。
1.文件操作(創建文件和文件夾,查看文件)
//創建一個文件路徑
File file = new File("D:\\testData.txt");
if(file.exists()){
//得到文件路徑
System.out.println(file.getAbsolutePath());
//得到文件大小
System.out.println("文件大小:"+file.length());
}
//創建文件和創建文件夾
File file1 = new File("d:\\iotest.txt");
if(!file1.exists())
{
try {
file1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
System.out.println("文件已存在");
}
//創建文件夾
File file2 = new File("d:\\testIO");
if(file2.isDirectory())
{
System.out.println("文件夾存在");
}else{
file2.mkdir();
}
//列出一個文件夾下的所有文件
File f = new File("d:\\testIO");
if(f.isDirectory())
{
File lists[] = f.listFiles();
for(int i=0;i<lists.length;i++)
{
System.out.println(lists[i].getName());
}
}
常用字節流FileInputStream和FileOutputStream:
FileInputStream:
FileInputStream fis = null;
try {
fis = new FileInputStream("D:\\testData.txt");
byte bytes[]=new byte[1024];
int n=0;
while((n=fis.read(bytes))!= -1){
String str = new String(bytes,0,n);
System.out.print(str);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}

查看輸出:

FileOutputStream:
FileOutputStream fos = null;
try {
fos = new FileOutputStream("D:\\testData.txt");
String str = "報效國家,舍生忘死";
byte bytes[] = str.getBytes();
fos.write(bytes);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
fos.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
查看一下:

如果是續寫文件,則可以加上參數:

字符流FileReader和FileWriter:
//字符流
//文件寫出 輸入流
FileReader freader = null;
//寫入到文件 輸出流
FileWriter fwriter = null;
try {
//創建輸入對象
freader = new FileReader("d:\\testData.txt");
//創建輸出對象
File f1 = new File("e:\\testData.txt");
if(!f1.exists()){
f1.createNewFile();
}
fwriter = new FileWriter(f1);
//讀入到內存
char chars[] = new char[1024];
int n=0;
while((n=freader.read(chars))!= -1)
{
fwriter.write(chars);
//System.out.println(chars);
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}finally{
try{
freader.close();
fwriter.close();
}catch(Exception e){
e.printStackTrace();
}
}
//緩沖字符流 bufferedReader bufferedWriter
BufferedReader bfreader = null;
try {
FileReader freader = new FileReader("d:\\testData.txt");
bfreader = new BufferedReader(freader);
//循環讀取
String s ="";
while((s=bfreader.readLine())!= null)
{
System.out.println(s);
}
} catch (Exception e) {
// TODO: handle exception
}
