Java第十章——输入、输出流

程序在运行的时候可能需要从外面读入数据,这个时候java.io包提供了大量的流类,所有的输入流都是抽象类InputStream(字节输入流)或抽象类Reader(字符输入流)的子类。而所有的输入流都是OutputStream(字节输入流)或Writer(字符输入流)的子类。

10.1File类

File类主要用来获取文件本身的一些信息,例如文件所在的目录,文件的长度,或文件的读写权限等,不涉及对文件的读写操作

public static void main(String[] args) {
		// TODO Auto-generated method stub
		File f=new File("c:/用户/father/桌面","Example10_1.txt");       //创建File对象
		System.out.println(f.getName()+"可读吗:"+f.canRead());           //下面的几个方法是File可操作的几个方法,获得File对象的属性
		System.out.println(f.getName()+"可写吗:"+f.canWrite());
		System.out.println(f.getName()+"的绝对路径是:"+f.getAbsolutePath());
		File file=new File("file.txt");
		System.out.println(file.getAbsolutePath());
		
		if(!file.exists()){
			try{
				file.createNewFile();
				System.out.println("创建成功!");
			}catch(IOException e){
				
			}
		}

	}

10.1.2目录

①File对象使用public boolean mkdir()方法创建一个目录
②public String []list()方法用字符串的形式返回目录下的全部文件
public File[]listFiles()方法用File对象形式返回目录下的全部文件
上述两种方法调用的接口都是FilenameFile,该接口有一个方法public boolean accept(File dir,String name)

public class FileAccept implements FilenameFilter{
	public String extendName;
	public void setExtendName(String s){      //设置文件的后缀名
		extendName="."+s;
	}

	@Override
	public boolean accept(File dir, String name) {
		// TODO Auto-generated method stub
		return name.endsWith(extendName);     //重写endWith方法
	}
}
public class Example10_1_2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File dirFile=new File("E:/");
		FileAccept f=new FileAccept();
		f.setExtendName("txt");
		String []fileName=dirFile.list(f);
		for(String name:fileName){
			System.out.println(name);
		}
	}

}

10.1.3运行可执行文件

步骤:使用java.lang包中的Runtime类,创建一个它的对象,然后对象调用exec(String command)方法,例:

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			Runtime ec=Runtime.getRuntime();   //当要执行本地的一个可执行文件时,就要使用java.lang包中的Runtime类创建一个对象
			                                // 然后对象调用其中的exec方法
			File file =new File("C:/Program Files (x86)/Tencent/QQBrowser","QQBrowser.exe"); //声明要打开的文件
			ec.exec(file.getAbsolutePath());     //调用exec()方法打开file对象要打开的路径
			
		}catch(Exception e){
			
		}

	}

10.2FilleInputStream输入流读取字节

步骤:①创建FileInputStream对象in
②指定要读取的文件,可以是直接指明,也可以是变量:
(1)FileInputStream in=new FileInputStream(“c:/a.txt”)
(2)File f=new File(“a.txt”);
FileInputStream in=new FileInputStream(f)
③调用对象in的read()方法读取源中的数据
int read() 如果未读出则返回-1
int read(byte b[]) 从源中读出b.length个字节到数组b中
int read(byte b[],int off,int len)从源中读取len个字节到b中,并返回实际读取的字节个数

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int n=-1;
		byte[]a=new byte[100];
		try{
			File file=new File("E:/test.txt");
			InputStream in=new FileInputStream(file);
			while((n=in.read(a,0,100))!=-1){
				String s=new String(a,0,n);
				System.out.println(s);
			}
			in.close();
		}catch(Exception e){
			System.out.println(e);
		}

	}

在这里插入图片描述

10_3 OutputStream写入流

步骤跟InputStream一样

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try{
			OutputStream out=new FileOutputStream("E:/tes.txt",true);
			byte[]a=("这是OutputStream练习").getBytes();//getBytes()将字符串转换为字符数组
			byte[]b=("续写上面的").getBytes();
			byte[]c=("第三次实验").getBytes();
			out.write(a);  ///写入
			out.write(b, 0, b.length);      //在a后面接着写b数组的全部内容
			out.write(c, 2, c.length-2);  //在b的后面接着写c的内容,其中2是取c数组的偏移量2,c.length-2是在文件中写入这么长的字节数
			out.close();
			}catch(Exception e){
				System.out.println(e);
			}
	}

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值