zoukankan      html  css  js  c++  java
  • Java IO笔记

      第一:File类(主要获取文件名,判断文件是否存在,创建或者删除文件)

    举个例子,代码如下:

    import java.io.File;
    
    public class Main{
    
        public static void main (String[] args) {
    
            File file=new File("F:\test");
            GetFileName(file);
    
        }
    
        public static void GetFileName(File file){
    
            if (file.exists()) {
    
                File[] files=file.listFiles();
    
                if (files!=null&&files.length>0) {
                    for (File s:files) {
                        if (s.isDirectory()) {
                            System.out.println(s);
                            GetFileName(s);
                        }
                        else
                            System.out.println(s);
                    }
                }
    
    
    
            }
            else {
    
                file.mkdir();
    
            }
        }
    
    
    }

    这个是File类的一个遍历的作用,结果是:

    当然我的文件夹是这样的

    以上代码里面我们需要知道的一些知识点:

    //创建File类的对象,输入路径
    File file=new File("F:\test");
    //判断文件是否存在,可以是文件夹也可以是文档
    file.exists();
    //判断文件是否是文件夹
    file.isDirectory();
    //获取该文件夹目录下的所有文件,必须是文件夹才可以执行此操作
    File[] files=file.listFiles();
    //创建文件
    file.mkdir();  //创建文件夹
    file.createNewFile();  //创建文件
    //删除文件 file.delete();

    这些是一些最基础的,当然还有一些其他的方法,就不深入的介绍

      第二:RandomAccessFile类(主要是读文件内容,写文件内容)

      第一步,我们已经学习了如何的去创建删除文件,如何获取文件名称。这一步来操作,如何在文件内写点东西,读点东西。

    Java里面写东西,本身就是byte byte的结合,而且会有一个指针会记录写的数据的位置。而且写完东西之后,必须要关闭,否则会有异常问题。

    我们看代码:

    import java.io.File;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    
    public class Main{
    
        public static void main (String[] args) throws IOException {
    
            //创建File类的对象,输入路径
            File file=new File("F:\test\蜀云泉.txt");
    
            if (file.exists()) {
    
                //打开我们的文件,选择模式。rw是读写模式,r是只读模式。这个会有IO异常,我们已经在方法哪里抛出异常
                RandomAccessFile raf=new RandomAccessFile(file,"rw");
                //写东西,可能会出现乱码,所以最好指定编码格式。
                raf.writeUTF("许嵩是最佳歌手");
                System.out.println(raf.length());
                //读东西,先把指针放到开头
                raf.seek(0);
                String content = raf.readUTF();
                System.out.println(content);
    
                raf.seek(raf.length());
                raf.writeUTF("追加内容");
    
                raf.close();
    
    
            }
            
    
        }
    }

    结果:

    是UTF编码是一个 汉字,3个字节。之所以是23是因为自动写进去了一个符号?,看看结果

    可能是哪里自己加的吧。。。。应该是writeUTF这个方法自己加的,我用gbk编码就没有这种情况。

    其实write方法有很多种可能的,什么先写进byte数组,在write,还有write字节什么的。我就不过多的探讨了。指针那块也很好理解,追加内容的也是。最后close一下就完事了,一定要close

      第三: IO流

    IO流其实分为字符流和字节流,比较重要的是 InputStream 和 OutputStream 。他们各自都有三个方法,最常用:

    InputStream流
    in.read();
    in.read(byte[] b);
    in.read(byte[] b,int off,int len);
    OutputStream流
    out.write(int b);
    out.write(byte[] b);
    out.write(byte[] b,int off,int len);

    Java里面封装了两个专门来操作文件的类,分别是 FileInputStream和FileOutputStream 他们俩继承了上面的俩。我们之间通过一个复制文件的功能的代码,来看看:

    import java.io.*;
    
    public class Main {
    
        public static void main(String[] args) throws IOException {
    
            copy(new File("F:\test\蜀云泉.txt"),new File("F:\test\副本.txt"));
    
        }
    
        //写一个复制文件的方法,把FileName1的数据复制到FileName2里面去
        public static void copy(File FileName1, File FileName2) throws IOException {
            if (!FileName1.isFile()) {
                throw new IllegalArgumentException("FileName1不是文件");
            }
            if (!FileName2.isFile()) {
                FileName2.createNewFile();
            }
            FileInputStream in = new FileInputStream(FileName1);
            FileOutputStream out = new FileOutputStream(FileName2);
            //写一个字符数组去读
            byte[] result = new byte[1024];
            int b;
            while ((b = in.read(result, 0, result.length)) != -1) {
                out.write(result, 0, b);
                out.flush();
            }
            in.close();
            out.close();
    
        }
    }

    是不是用到上面的三个方法了,就是这么简单。学会read和write方法就行了

    java.io.File类:表示了文件和目录. Window系统:表示路径使用.但是在Java中,一根表示转义符,我们就不得不写成:\. String path = "D:\JavasePros\day11"; 路径分割使用;. Unix 系统:表示路径使用/. String path = "D:/JavasePros/day11"; 路径分割使用:.

  • 相关阅读:
    第十五天-linux系统文件权限详细讲解
    GB28181实现H265 H264摄像头 Web端无插件直播
    海康8700等联网网关通过GB28181接入LiveGBS流媒体服务实现web端无插件直播
    LiveNVR如何对接LiveQing云平台
    Onvif/RTSP视频流对接云平台-实现高性能云端直播及录像存储方案
    Onvif/RTSP摄像头实现按需直播-降低带宽流量使用
    LiveQing
    使用LiveGBS将GB28181流转成RTSP流上大屏
    实现国标GB28181流媒体服务解决方案
    LiveGBS GB28181流媒体服务-产品介绍及相关资源
  • 原文地址:https://www.cnblogs.com/yunquan/p/9571058.html
Copyright © 2011-2022 走看看