JAVA筆記4

2020-08-10 12:39:34


續3 流的部分

第九部分

1.檔案位元組輸入流FileInputStream

指從檔案中或者其他地方讀取數據輸入到記憶體中
這個是輸出了那個檔案的內容
注意
in.close();別忘了寫
in.read();是返回依次讀取的長度。知道讀到最後 返回-1

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class test
{
	public static void main(String[] args) 
	{	
		FileInputStream in;
		try
		{
			in = new FileInputStream("D:\\office\\new.txt");
			byte b[]=new byte[100];
			int len=0;
			while((len=in.read(b))!=-1)
			{
				
				System.out.println(new String(b,0,len));
				new String (緩衝數據的陣列,從那個位置開始轉化,總共轉換多少位元組)
			}
			in.close();
		}
		catch (Exception e)
		{
			
			e.printStackTrace();
		}
	}
}

2.檔案位元組輸出流FileOutputStream

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class test
{
	public static void main(String[] args) 
	{	
		/*FileInputStream in;
		try
		{
			in = new FileInputStream("D:\\office\\new.txt");
			byte b[]=new byte[100];
			int len=0;
			while((len=in.read(b))!=-1)
			{
				
				System.out.println(new String(b,0,len));
				//new String (緩衝數據的陣列,從那個位置開始轉化,總共轉換多少位元組)
			}
			in.close();
		}
		catch (Exception e)
		{
			
			e.printStackTrace();
		}
		*/
		try {
			
			FileOutputStream out=new FileOutputStream("D:\\office\\new.txt");
			String s=" are you ?";
			out.write(s.getBytes());把數據寫到記憶體
			out.flush();把記憶體中的數據刷寫到硬碟
			out.close();關閉流
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
	}
}
上邊這個輸出流寫法 會直接把原來的內容覆蓋掉

3.位元組流複製檔案

第一個是賦值txt
try {
			
			FileOutputStream out=new FileOutputStream("D:\\office\\new2.txt");
			FileInputStream in=new FileInputStream("D:\\office\\new.txt");
			byte b[]=new byte[100];
			int len=0;
			while((len=in.read(b))!=-1)
			{
				out.write(b,0,len);
				(緩衝陣列,從哪個位置開始,獲取的陣列總長度)}
			out.flush();
			out.close();
			in.close();
			
		} catch (Exception e) 
		{
			
			e.printStackTrace();
		}
	
第二個是複製圖片 但是 就算你要複製去的地方 你要寫上名字
		try {
			
			FileOutputStream out=new FileOutputStream("D:\\office\\2\\new.png");
			FileInputStream in=new FileInputStream("D:\\office\\1.png");
			byte b[]=new byte[100];
			int len=0;
			while((len=in.read(b))!=-1)
			{
				out.write(b,0,len);
				(緩衝陣列,從哪個位置開始,獲取的陣列總長度)}
			out.flush();
			out.close();
			in.close();
			
		} catch (Exception e) 
		{
			
			e.printStackTrace();
		}
	
	}

注意byte陣列並不是只用一次哦,那個容量是代表他每次讀的長度大小 並不是只能讀這些!!!!

4.檔案字元流

在这里插入图片描述
字元流完成拷貝檔案,字元流只適合操作內容是字元檔案

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
public class test
{
	public static void main(String[] args) 
	{	
		
		test.testFileReader("D:\\office\\new.txt");
		test.testFileWriter("yes", "D:\\office\\new.txt");
	}
	檔案字元輸入流-------
	public static void testFileReader(String path)
	{
		try {
			FileReader f=new FileReader(path);
			char c[]=new char[100];
			int len=0;
			while((len=f.read(c))!=-1)
			{
				System.out.println(new String(c,0,len));
			}
			f.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	檔案字元輸出流
	public static void testFileWriter(String text,String path)
	{
		try {
			FileWriter f=new FileWriter(path);
			f.write(text);
			f.flush();//記憶體數據刷到硬碟
			f.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	字元流完成拷貝檔案
	public static void copy(String inf,String outf)
	{
		try {
			FileReader fr=new FileReader(inf);
			FileWriter fw=new FileWriter(outf);
			char c[]=new char[100];
			int len;
			while((len=fr.read(c))!=-1)
			{
				fw.write(c,0,len);
			}
			fw.flush();
			fw.close();
			fr.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
}