java基础-IO编程

流是一组有序的数据序列,分为输入流和输出流。IO操作主要是对文件进行操作,而所有的IO操作都在java.io包中,主要是:File,InputStream,OutputStream,Reader,Writer和Serializable。
File操作

    public static void main(String[] args)throws Exception{
        File file=new File("d:"+File.separator+"demo"+File.separator+"text8.txt");
        //判断父目录是否存在,如果不存在,创建目录,创建文件
        if (!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
            file.createNewFile();
        }else {    //如果父目录存在,判断文件是否存在,不存在创建新文件
        if (!file.exists()) {
            file.createNewFile();
            System.out.println("创建新文件!");

        }}
        System.out.println("文件存在!");


    }

程序结果:文件存在

   public static void main(String[] args)throws Exception{
        File file=new File("d:"+File.separator+"demo"+File.separator+"text8.txt");
        if (!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        if (file.exists()) {
            System.out.println("文件名称:"+file.getName());
            System.out.println("文件长度:"+file.length());
            System.out.println("是文件:"+file.isFile());



        }

程序结果:
文件名称:text8.txt
文件长度:0
是文件:true

目录查询

public static void main(String[] args)throws Exception {
        File file=new File("d:"+File.separator+"demo");
        if (file.isDirectory()){
            File result[]=file.listFiles();
            for (int x=0;x<result.length;x++){
                System.out.println(result[x]);
            }

        }


    }

程序结果:
d:\demo\testA.txt
d:\demo\testB.txt
d:\demo\text8.txt

字节流与字符流
outputStream针对的内存而言,是向文件写入。

public static void main(String[] args)throws Exception{
        File file=new File("d:"+File.separator+"demo"+File.separator+"text8.txt");
        if (!file.getParentFile().exists()){
            file.getParentFile().mkdirs();
        }
        OutputStream os=new FileOutputStream(file);
        String str="阿珍爱上了阿强";
        byte data[]=str.getBytes();
        os.write(data);
        os.close();
        System.out.println("写入成功");



    }

程序结果:写入成功
程序截图
InputStream针对文件读取

 public static void main(String[] args)throws Exception{
        File file=new File("d:"+File.separator+"demo"+File.separator+"text8.txt");
        if (file.exists()){
            InputStream is=new FileInputStream(file);
            byte data[]=new byte[1024];
            int foot=0;
            int temp=0;
            while ((temp=is.read(data))!=-1){
                data[foot++]=(byte) temp;
            }
            is.close();
            System.out.println(new String(data,0,foot));

        }




    }

程序结果:阿珍爱上了阿强
使用系统自带的记事本打开会出现乱码。

创建文件输入“阿珍爱上了阿强”并且读取。

public static void main(String[] args) throws IOException {
		File file=new File("d:"+File.separator+"demo"+File.separator+"test.txt");
		if (file.exists()) {
			file.delete();
			System.out.println("已有文件删除!");
		}else {
			try {
				file.createNewFile();
			System.out.println("创建文件!");
			} catch (Exception e) {
				e.printStackTrace();
			}
			
		}
		if (!file.getParentFile().exists()) {
			file.getParentFile().mkdirs();
		}
		try {
			OutputStream os=new FileOutputStream(file);
			String str="阿珍爱上了阿强";
			byte data[]=str.getBytes();
			os.write(data);
			os.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		if (file.exists()) {
			InputStream is=new FileInputStream(file);
			byte data[]=new byte[1024];
			int temp=0;
			int foot=0;
			while ((temp=is.read())!=-1) {
				data[foot++]=(byte)temp;
			}
			
			is.close();
			System.out.println(new String(data,0,foot));
		}
		
		
		
		
	}

文件复制,需要先初始化文件

 public static void main(String[] args)throws  Exception{
        long start=System.currentTimeMillis();
        if (args.length!=2) {
            System.out.println("命令错误");
            System.exit(1);
        }
        File inFile=new File(args[0]); //源文件路径
        if (!inFile.exists()){
            System.out.println("文件不存在");
            System.exit(1);
        }
        File outFile=new File(args[1]);  //复制文件路径
        if (!outFile.getParentFile().exists()) {
            outFile.getParentFile().mkdirs();
        }

        InputStream is=new FileInputStream(inFile);
        OutputStream os=new FileOutputStream(outFile);
        byte data[]=new byte[1024];
        int temp=0;
        while ((temp=is.read(data))!=-1){
            os.write(data,0,temp);
        }
        is.close();
        os.close();
        long end=System.currentTimeMillis();
        System.out.println("文件复制时间:"+(end-start));
        
    }

缓存是对I/O的性能优化,,缓存流增加了内存缓存区。字符缓冲区流:BufferedReader、BufferedWriter。字节缓冲区流:BufferedInputStream、BufferedOutputStream。

	public static void main(String[] args) {
		File file=new File("d:"+File.separator+"demo"+File.separator+"test.txt");
		String content[]= {"阿珍","爱上了","阿强"};
		if (file.exists()) {
			try {
				FileWriter fw=new FileWriter(file);
				BufferedWriter bw=new BufferedWriter(fw);
				for (int i = 0; i < content.length; i++) {
					bw.write(content[i]); //遍历输出
					bw.newLine();  //每一个元素换行显示
				}
				bw.close();
				fw.close();	

			} catch (Exception e) {
				e.printStackTrace();
			}
			}
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs();
			}
				try {
					FileReader fr=new FileReader(file);
					BufferedReader br=new BufferedReader(fr);
					String str=null;
					while ((str=br.readLine())!=null) {
						System.out.println(str);
						
					}
					br.close();
					fr.close();
				
			} catch (Exception e) {
				e.printStackTrace();
			}
				
			}
		
						
			

程序结果:
阿珍
爱上了
阿强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java IO编程Java语言中的一个重要组成部分,用于处理输入输出流,包括文件读取、网络通信、数据库操作等。以下是Java IO编程的超详细介绍: 1. Java IO模型 Java IO模型由InputStream和OutputStream两个抽象类构成。InputStream和OutputStream提供了大量的方法用于处理字节流输入输出。 2. 字节流和字符流 Java IO中的流分为两种:字节流和字符流。字节流主要用于二进制数据的读取和写入,而字符流主要用于字符数据的读取和写入。字节流处理的是字节数据,字符流处理的是字符数据。 3. 文件输入输出流 Java提供了FileInputStream和FileOutputStream用于读取和写入文件中的数据。FileInputStream从文件中读取数据,FileOutputStream将数据写入文件中。 4. 缓冲流 缓冲流是Java IO中常用的一种流,可以通过缓存机制提升输入输出性能。BufferedInputStream和BufferedOutputStream可以增加字节输入输出时的缓冲区大小,从而提高读写性能,BufferedReader和BufferedWriter可以增加字符输入输出时的缓冲区大小,提高读写性能。 5. 对象输入输出流 ObjectInputStream和ObjectOutputStream可以用来读取和写入Java对象。这两个流用于对象的序列化和反序列化,将对象转化为字节序列,或将字节序列转化为对象。 6. 网络输入输出流 Java提供了Socket、ServerSocket、DatagramSocket等类用于网络通信。对于网络输入输出,可以使用DataInputStream和DataOutputStream进行读写,也可以使用BufferedReader和PrintWriter进行读写。 7. 转换流 转换流可以用来转换字节流和字符流之间的读写,比如InputStreamReader和OutputStreamWriter可以将字节流转换为字符流,FileReader和FileWriter也可以转换为字符流。 8. 数据库输入输出流 Java中提供了JDBC(Java Database Connectivity)用于数据库操作。JDBC中的输入输出流用于读取和写入数据库中的数据。 以上是Java IO编程的超详细介绍,希望能对您有帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值