java----输入输出流(二)

File类的删除功能

boolean  delete()
删除成功返回ture,删除失败返回false

  • 删除方法,不走回收站,直接从硬盘删除

File类获取功能

String getAbsolustePath( ) f返回此抽象路径名的绝对路径名字符串
String getName返回由此抽象路径名表示的文件或目录的名称
String getPath( )将此抽象路径名转换为一个路径名字符串

方法演示:

public  class FileMethodDemo{
      public static void main(String args[ ]){
        //创建文件对象
        File file = new File("Test33.java");
        //获取文件的绝对路径,即全路径
        String absPath = file getAbsolutePath( );
        //File中封装的路径是什么获取到的就是什么
        String path =file.getPath();
        //获取文件名称
        String filename  = file.getName(  );


   System.out.println("absPath="+absPath);
   System.out.println("path="+path);
   System.out.println("filename="+filename);
 
}
}

File获取判断功能

boolean exists( )判断File构造方法中封装路径是否存在
boolean isDirectory( )判断File构造方法中封装的路径是不是文件夹
boolean isFile( ) 判断File构造方法这种封装的路径是不是文件

File类获取list功能

String list()返回一个字符串数组,这些字符串制定此抽象路径表示的目录中的文件和目录
File listFiles( )返回一个抽象路径数组,这些路径名表示由此抽象路径名表示的目录中的文件

方法演示:

public class FileMethodDemo3 {
	public static void main(String[] args) {
		File dir = new File("e:\\java_code");
		//获取的是目录下的当前的文件以及文件夹的名称。
		String[] names = dir.list();
		for(String name : names){
			System.out.println(name);
		}
		//获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就可以获取其中想要的信息
		File[] files = dir.listFiles();
		for(File file : files){
			System.out.println(file);
		}
	}
}

注意: 在获取指定目录下的文件或者文件夹时必须满足下面两个条件

  • 1,指定的目录必须是存在的,
  • 2,指定的必须是目录。否则容易引发返回数组为null,出现NullPointerException

字节输入流

abstract int read( )从输入流中读取数据的下一个字节
int read( byte[ ] b) 从输入流中读取一定数量的字节,并将七储存在 缓冲区数组b中。
  • int read():读取一个字节并返回,没有字节返回-1.

字节输出流OutputStream

void close( )关闭此输出流并释放于此刘有关的所有系统资源
void write(byte[ ] b )将指定byte数组中从偏移量byte数组写入此输出流
void write(byte[ ] b.int off,int len)指定byte数组中从偏移量off开始的冷个字节写入此输出流
void write(int b)将指定的自觉写入此输出流

FileInputStream

FileInputStream(File file) 通过打开到世纪文件的链接来创建一个FileInputStream,该文件通过文件系统中的 File对象file指定
FileInputStream(String name) 通过打开一个到实际文件的链接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定。

FileOutputStream


public class FileOutputStreamDemo {
	public static void main(String[] args) throws IOException {
		//需求:将数据写入到文件中。
		//创建存储数据的文件。
		File file = new File("c:\\file.txt");
		//创建一个用于操作文件的字节输出流对象。一创建就必须明确数据存储目的地。
		//输出流目的是文件,会自动创建。如果文件存在,则覆盖。
		FileOutputStream fos = new FileOutputStream(file);
		//调用父类中的write方法。
		byte[] data = "abcde".getBytes();
		fos.write(data);
		//关闭流资源。
		fos.close();
	}
}

  • 上面的for.write(“abcde”.getBytes())用的是write(byte[] b)方法,它会将字节数组中b.length个字节即所有字节都写入到输出流中。可以采用write(byte[] b,int off,int len)方法每次写给定位置、长度的字节数据。

给文件的换行

FileOutputStream (File file,booiean,boolean append)创建一个指定的File对象表示文件中写入数据的输出文件流
FileOutputStream(String name,boolean append)创建一个具指定name的文件中写入数据的输出文件流
public class FileOutputStreamDemo2 {
	public static void main(String[] args) throws Exception {
		File file = new File("c:\\file.txt");
		FileOutputStream fos = new FileOutputStream(file, true);
		[设置给指定文件续写数据]
		String str = "\r\n"[实现换行]+"itcast";
		fos.write(str.getBytes());
		fos.close();
	}
}


IO异常处理

public class FileOutputStreamDemo3 {
	public static void main(String[] args) {
		File file = new File("c:\\file.txt");
		//定义FileOutputStream的引用
		FileOutputStream fos = null;
		try {
			//创建FileOutputStream对象
			fos = new FileOutputStream(file);
			//写出数据
			fos.write("abcde".getBytes());
		} catch (IOException e) {
			System.out.println(e.toString() + "----");
		} finally {
			//一定要判断fos是否为null,只有不为null时,才可以关闭资源
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					throw new RuntimeException("");
				}
			}
		}
	}
}
  • 细节: 1. 保证流对象变量,作用域足够。
    2. catch里面,怎么处理异常
    输出异常的信息,目的是看到哪里出现了问题。
    3. 如果流对象建立失败了,需要关闭资源吗?
    new对象的时候,失败了没有占用系统资源
    释放资源的时候,对流对象判断null
    变量不是null,对象建立成功,需要关闭资源。
发布了43 篇原创文章 · 获赞 6 · 访问量 1557

猜你喜欢

转载自blog.csdn.net/weixin_43729631/article/details/86508954