Java学习中关于I/O的理解(File类)1

可以使用File类创建一个文件对象。File有以下三种构造方法(注意:其中所指的文件必须存在!如果不存在,File类对象可以通过调用createNewFile();方法创建该文件):


1、通过将给定路径名字字符串转换为抽象路径名来创建一个新File实例

new File(String pathname);

//其中pathname指路径名称(包含文件名)如("d:/word.txt");


2、根据定义的父路径和子路径字符串(包含文件名)创建一个新的File对象。

new File(String parent, String child);

//parent:父类路径字符串,如(D:/或D:/doc);     child:子类路径,如(word.txt);


3、根据parent抽象路径名和child路径名字符串创建一个新File实例。

new File(File f, String child);

//f:父路径对象,如(D:/doc/);     child:子路径字符串,如(word.txt);


文件的创建与删除  代码如下:

package hhh;

import java.io.File;
import java.io.IOException;
/**
 * 文件的创建与删除
 * 该代码可以反复执行(反复创建与删除)!
 * @author hanjiangbo
 *
 */
public class FileTest {
	public static void main(String[] args) {
		File file = new File("word.txt");
		if(file.exists()) {
			file.delete();
			System.out.println("文件已删除!");
		}
		else {
			try {
				file.createNewFile();
				System.out.println("文件已创建!");
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}


文件的输入/输出流  :


FileOutputStream类和FileInputStream类都用来操纵磁盘文件。(存在不足,这两个类都只给出了对字节或字节数组的读取方法,而一个汉字占两个字节,所以一旦读取的字节不合适就有可能乱码,解决方法见后面的FileReader和FileWriter类)

FileOutputStream类和FileInputStream类对应,提供了基本文件写入能力。


FileInputStream(String name);    

该方法使用给定的文件名name创建一个FileInputStream对象

FileInputStream(File file);         

该方法使用File对象创建一个FileInputStream对象。允许把文件链接输入流之前对文件作进一步分析。

FileInputStream类与FileOutputStream类有相同的参数构造方法,创建一个FileOutputStream对象时,可以指定不存在的文件名,但此文件不能是一个已经被其他程序打开的文件。

代码如下:

package hhh;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Test {
	public static void main(String[] args) {
		String s = "asdfasdf";
		System.out.println(s.length());
		File file = new File("word.txt");
		try {
			FileOutputStream out = new FileOutputStream(file);
			byte buy[] = "asdfsadf".getBytes();
			out.write(buy);
			
			out.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		try {
			FileInputStream in = new FileInputStream(file);
			byte byt[] = new byte[1024];
			int len = in.read(byt);
			System.out.println(len);
			System.out.println(new String(byt,0,len));
			in.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


FileReader和FileWriter类

FileReader和FileWriter字符流对应了FileInputStream和FileOutputStream类。

FileReader流顺序地读取文件,只要不关闭流,每次调用read();方法就顺序地读取源中的其余内容,一直到最后或者流被关闭。(代码与FileInputStream和FileOutputStream的相仿)

代码如下:

package hhh;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Student {
	public static void main(String[] args) {
		Scanner f=new Scanner(System.in);
		int a=f.nextInt();
		if(a == 1) {
			actionPerFormed();
		}
		else {
			actionPerFormed2();
		}
	}

	private static void actionPerFormed() {			//写入文件!!!!!!
		File file = new File("word.txt");
		try {
			FileWriter out = new FileWriter(file);
			out.write("asdfasdf");
			out.close();
			System.out.println("写入文件成功!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private static void actionPerFormed2() {			//读取文件!!!!!!
		File file = new File("word.txt");
		try {
			FileReader in = new FileReader(file);
			char byt[] = new char[1024];
			int len = in.read(byt);
			System.out.println("文件内容:" + new String(byt, 0, len));
			in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

未完待续。。。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值