JAVA SE 输入输出流

IO流技术

导入IO包
对文件或者流进行操作,则必须显式地声明如下语句:import java.io.*;
File类介绍
1、File类的对象不但可以表示文件,还可以表示目录,在程序中一个File类对象可以代表一个文件或目录。
2、当创建一个文件对象后,就可以利用它来对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等等。
3、需要注意的是,File对象并不能直接对文件进行读/写操作。
File类的构造方法
1、在当前目录下创建一个与aaa.txt文件名相关联的文件对象。

File f1 = new File("aaa.txt");

2、指明详细的路径以及文件名,请注意双斜线。

File f2 = new File("D:\\Java\\Hello.java");

File类中的常用方法
boolean exists() 判断文件是否存在,存在返回true,否则返回false
boolean isFile() 是否为文件,是文件返回true,否则返回false
boolean isDirectory() 是否为目录,是目录返回true,否则返回false
String getName() 获得文件的名称
String getAbsolutePath() 获得文件的绝对路径
long length() 获得文件的长度(字节数)
boolean createNewFile() throws IOException 创建新文件,创建成功返回true,否则返回false,有可能抛出IOException异常,必须捕捉
boolean delete() 删除文件,删除成功返回true,否则返回false
String[] list() 返回文件夹内的子文件与子文件夹名称的数组
File[] listFiles() 文件夹内的子文件与子文件夹的数组

Problem
资源管理器
设计一个用于显示指定目录下所有文件与文件夹的资源管理器类
要求包括:
(1)从命令行输入一个路径,如果存在,将该目录下所有的文件和文件夹列名称举出来
(2)如果不存在则输出不存在该路径

package chap;
import java.io.*;/*导入文件包*/
import java.util.Scanner;
public class Chao {
	public static void main(String...strings){
  		String string;
  		Scanner scanner = new Scanner(System.in);
  		string = scanner.nextLine();/*输入路径*/
  		File file = new File(string);/*该路径下的文件*/
  		if(file.exists())/*文件存在*/{
   			show(file);
  		}else{
   			System.out.println("不存在!");
  		}
  	}
  	private static void show(File file) {
  		if(file.isDirectory()){
  		   if(file.listFiles()!=null){
			for(File sub : file.listFiles()){
				/*file.listFiles()返回文件夹内的子文件与子文件夹的数组*/
				System.out.println(sub.getAbsolutePath());
			}
		   }
	      }
	}
}

FileInputStream

package chap;
import java.io.*;
public class FileInputStreamDemo1 {
 	public static void main(String[] args) throws IOException{
  		File file = new File("src/chap/FileInputStreamDemo1.java");//创建文件对象
  		//创建文件输入流对象
 		FileInputStream fis = new FileInputStream(file);
  		for(int i=0; i<file.length(); i++){
   			char ch = (char)(fis.read());//循环读取字符
  			System.out.print(ch);
  		}
  		System.out.println();
  		fis.close();//关闭流
	}
}
package chap;
import java.io.*;
public class FileInputStreamDemo2{
	public static void main(String[] args)throws Exception{
       		File file = new File("src/chap/FileInputStreamDemo2.java");  		//创建文件对象
       		FileInputStream fis = new FileInputStream(file);
       		//根据文件的字节长度创建字节数组
       		byte[] buf = new byte[(int)(file.length())];
       		fis.read(buf);         //读取文件数据存放到字节数组中
       		String str = new String(buf);  //用字节数组创建字符串
       		System.out.println(str);   //打印字符串
       		fis.close();     //关闭流
   	}
}

FileOutputStream

package chap;
import java.io.*;
public class FileOutputStreamDemo1 {
 	public static void main(String[] args) throws IOException{
  		String str="Hello world!";
  		File file = new File("D:\\test.txt");
  		FileOutputStream fos = new FileOutputStream(file,true);
  		/*FileOutputStream(File,boolean)确认是否将文件中的内容被输出流中的内容覆盖。这里的append为true就是在文件末尾添加内容,为false就是覆盖。*/
  		for(int i=0; i<str.length(); i++){
   			fos.write(str.charAt(i));
   			/*charAt(i)是获取字符串中i位置的字符*/
  		}
  		fos.close();
 	}
}
package chap;
import java.io.*;
public class FileOutputStreamDemo2 {
   	//在函数内部不进行异常处理,将异常抛出函数外部
   	public static void main(String[] args) throws Exception {
       		String str = "I Love Java";
       		//通过文件名创建文件输出流对象
       		FileOutputStream fos = new FileOutputStream("D:\\test.txt");
       		byte[] buffer = str.getBytes();
       		//将字节数组中包含的数据一次性写入到文件中
       		fos.write(buffer); 
       		//将字符串转化为字节数组
       		fos.close();
   	}
}

剪切实现

package chap;
import java.io.*;
public class Copycut {
	public static void main(String[] args) throws IOException{
		String source,dest;
  		source = "D:\\test.txt";
  		dest = "D:\\text.txt";
  		Copy1(source,dest);
 		Cut(source);
 	}
 	private static void Copy1(String source, String dest) throws IOException{
 		File file = new File(source);
   		FileInputStream fis = new FileInputStream(file);
   		FileOutputStream fos = new FileOutputStream(dest);
   		for(int i=0; i<file.length(); i++){
    			fos.write(fis.read());
   		}
   		fis.close();
   		fos.close();
   	}
 	private static void Cut(String source) throws IOException{
  		File file = new File(source);
  		file.delete();
 	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

起名字可真难QAQ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值