java文件操作

IO流:

低效O:

FileWriter初始化操作

FileWriter(String Filename, boolean append)  // 参数append 默认为false

FileWriter对文件的写入操作

		void write(String str);  
		void write(String str, int index, int len);
		void write(int ch);  // 注意,这是写一个字符, 如:write(97),则写入的为'a',如果想写数字,推荐使用第一个,如write("97")
		void write(char[] chs); 
		void write(char[] chs, int index, int len);

Demo:

FileWriter fw = new FileWriter("d:\\a.txt");
 fw.write("IO流Demo");
fw.write("换\r\n行");	
fw.flush();
fw.close();

低效I:

FileReader:
FileReader(String filename)

读取操作:

int read()  // 一次读取一个字符 以ASCII存储 想要看到字符 做类型转换 (char)read()
// 当返回值为-1时,说明没有数据了
int read(char[] cbuf)  // 一次读取一个字符数组,返回的是实际读取到的字符的个数

Demo1:

    //一次读取一个字符
    FileReader fr = new FileReader("d:\\a.txt");
    int ch;
    while((ch=fr.read())!=-1)
    {
        System.out.print((char)ch);
			
    }
    fr.close();

Demo2:

//一次读取一个1024个字符
			FileReader fr - new FileReader("d:\\a.txt");
			char[] chs = new char[1024];
			int len;
			while((len = read(chs))!= -1 )
			{
				System.out.print(new String(chs, 0, len));
			}
			fr.close();

高效O:

Demo:

			BufferedWriter bw = new BufferedWriter(new FileWriter("d:\\bw.txt"));
			bw.write("高效O Demo");
			bw.write("换\r\n行");
			bw.flush();
			bw.close();
		特殊功能:
			void newLine() // 写一个换行符,具体是什么由系统决定, win(\r\n)   linux(\n)   mac(\r)

高效I:

Demo:

			BufferedReader br = new BufferedReader(new FileReader("d:\\bw.txt"));
			char[] chs = new char[1024];
			int len;
			while((len=bw.read(chs))!=-1)
			{
				System.out..print(new String(chs,0,len));
			}
			bw.close();
		特殊功能:
			String readLine()  // 一次读取一行数据,但是不读取换行符。

☆Demo:

			BufferedReader br = new BufferedReader(new FileReader("d:\\bw.txt"));
			String line;
			while((line = br.readLine()) != null)
			{
				System.out.println(line);
			}
			
			br.close;
//具有鲁棒性的文件写入
	public static void main(String[] args) {
		function("a.txt");
	}
	
	public static void function(String filename){
		FileWriter fw = null;
		try {
			//System.out.println(1/0);;
			fw = new FileWriter(filename);
			fw.write("hello world");
			fw.write("hello world");
			//fw.write(2/0);
			fw.write("hello world");
			fw.write("hello world");
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				if(fw!=null)
					fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
		
	}

使用字节流进行文件的复制(二进制文件的复制)

private static void method() throws FileNotFoundException, IOException {
	FileInputStream fis = new FileInputStream("这里是一个文件名");
	FileOutputStream fos = new FileOutputStream("另一个问件名");
	
	// 一次读一个字节
//		int by;
//		while((by = fis.read() ) !=-1){
//			fos.write(by);
//		}
	
	// 一次读取一个字符数组
	int len;
	byte[] bys = new byte[1024];
	while((len = fis.read(bys))!=1){
		fos.write(len);
	}
	
	fis.close();
	fos.close();
}
posted @ 2019-06-21 11:13  it-pupil  阅读(5316)  评论(0编辑  收藏  举报