JAVA笔记4

文章目录

    • 第九部分
    • 1.文件字节输入流FileInputStream
    • 2.文件字节输出流FileOutputStream
    • 3.字节流复制文件
    • 4.文件字符流

续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.文件字符流

JAVA笔记4_第1张图片
字符流完成拷贝文件,字符流只适合操作内容是字符文件

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();
		}
		
		
	}
}

你可能感兴趣的:(java学习)