file_files - CSDN
file 订阅
File,英文单词,名词、及物动词、不及物动词,作名词时意为“文件;档案;文件夹;锉刀,人名;(匈、塞)菲莱”,作及物动词时意为“提出;锉;琢磨;把…归档”,作不及物动词时意为“列队行进;用锉刀锉”。 展开全文
File,英文单词,名词、及物动词、不及物动词,作名词时意为“文件;档案;文件夹;锉刀,人名;(匈、塞)菲莱”,作及物动词时意为“提出;锉;琢磨;把…归档”,作不及物动词时意为“列队行进;用锉刀锉”。
信息
外文名
File
英式音标
[faɪl]
词    性
名词、及物动词、不及物动词
美式音标
[faɪl]
File短语搭配
file system [计] 文件系统 ; 档案系统 ; 文件体系 ; 文件编制file server 文件服务器 ; 档案伺服器 ; 档案服务器 ; 文件服务程序log file 日志文件 ; 访客流量统计文件 ; 记录档 ; 记录文件register file 寄存器堆 ; [计] 寄存器文件 ; 寄存器组File Explorer 文件资源管理器 ; 文件管理器 ; 文件浏览器 ; 资源管理器Source file [计] 源文件 ; 来源文件 ; 来源档案temporary file [计] 临时文件 ; 暂存文件 ; 暂时档案nail file 指甲锉 ; 指甲锉刀inverted file 倒排文件 ; [计] 倒置文件 ; 倒向文件 ; 倒排文档 [1] 
收起全文
  • 1.File对象对应你磁盘上的一个文件或者文件夹(路径),一个file对象代表了一个文件或者文件夹的引用,并不是直接物理上的。2.File.separator: 连接符 public static final String separator与系统相关的默认名称 - ...

    1.File对象对应你磁盘上的一个文件或者文件夹(路径),一个file对象代表了一个文件或者文件夹的引用,并不是直接物理上的。

    2.File.separator: 连接符
    public static final String separator与系统相关的默认名称 - 分隔符字符,以方便的方式表示为字符串。 该字符串包含一个字符,即separatorChar 。 (public static final char separatorChar与系统相关的默认名称分隔符。 该字段被初始化为包含系统属性值file.separator的第一个file.separator 。 在UNIX系统上,该字段的值为’/’ ; 在Microsoft Windows系统上是’\’ 。 )

    3.创建File实例对象的几种方式
    第一种:

        File file = new File("D:\\abc.txt");
        System.out.println(file);

    第二种:

    // parent  前面的路径   chid  在parent 后面追加的目录
            File file2 = new File("D:\\c", "abc.txt");
            System.out.println(file2);

    第三种:

           File  parent = new File("D:\\d");
            File file3 = new  File(parent, "qwe.doc");
            System.out.println(file3);

    4.创建文件

    //返回的是否创建成功
        try {
                boolean flag = file.createNewFile();
                System.out.println(flag);
            } catch (IOException e) {
                e.printStackTrace();
            }

    5.判断文件是否可读写canRead() canWrite()

            System.out.println(file.canRead());
            // 判断文件是否可写
            System.out.println(file.canWrite());

    6 . 判断文件是否存在exists(), 如果不存在则 创建, 存在则不创建了

    if(!file2.exists()){// 判断文件是否存在
                try {
                    file2.createNewFile();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }else{
                System.out.println("已经存在了 ");
            }

    7 .创建文件夹 单层mkdir()

            String string = "D:\\d";
            File file = new File(string);
            boolean flag = file.mkdir();// 创建文件夹  单层
            System.out.println(flag);

    8 .利用mkdirs 可以同时创建多层目录

    File file2 = new File("D:\\d\\a\\c\\w");
            file2.mkdirs();// 利用mkdirs 可以同时创建多层目录

    9 . 如何区分 文件或者是 文件夹

          if(file2.isDirectory()){// 判断是否是文件夹
                System.out.println("是文件夹");
            }
            if(file3.isFile()){
                System.out.println("是文件");
            }

    10 . 删除指定文件

            File file2 = new File("D:\\d\\a\\c\\w");    
            File file3 = new File(file2, "abc.txt");
            boolean flag2 = file3.delete();
            System.out.println(flag2);

    11 .length()判断文件的长度 而非文件夹的长度 ,返回long类型的

            long l = file3.length();
            System.out.println(l);

    12 .得到路径

    File file = new File("D:\\d\\a\\c\\w\\abc.txt");
            System.out.println(file.getPath());// 得到路径

    13 .System.out.println(file.getParent());// 得到 文件的父目录

    14 . System.out.println(file.getParentFile());// 得到 文件的父目录 返回的是File对象

    15 .// 重命名 被其他 占用的时候 就不能重命名成功

        File file3 = new File("D:\\d\\a\\c\\w\\hehe.txt");
            boolean flag = file.renameTo(file3);
            System.out.println(flag);

    16.将文件过滤掉,文件夹保留

    package com.qf.demo2;
    
    import java.io.File;
    import java.io.FilenameFilter;
    
    /**
     * list()  返回 指定目录  下的   所有 的  目录和文件的名字   String[]
     * list(FilenameFilter filter)  得到的所有的名字 进行对应的过滤
     * 
     * 
     * 
     * listFiles()   返回 指定目录  下的   所有 的  目录和文件的   file 对象表现形式  File[]
     * listFiles(FilenameFilter filter)  得到的所有的名字 进行对应的过滤
     * 
     */
    public class Test4 {
    
        public static void main(String[] args) {
    
            //File file = new  File("D\\java上课内容\\2015新版PPT":);
            File file = new File("D:\\java上课内容");
            String[] strings = file.list();
            /*for (String string : strings) {
                System.out.println(string);
            }
            File[] files = file.listFiles();
            for (File file2 : files) {
                System.out.println(file2);
            }*/
    
    
            String[] strings2 = file.list(new MyFilter());
            for (String string : strings2) {
                System.out.println(string);
            }
    
            File[] file2 = file.listFiles(new MyFilter());
            for (File file3 : file2) {
                System.out.println(file3);
            }
    
        }
    }
    
    class MyFilter implements FilenameFilter{
    
        // dir 指定的目录        name 是 dir 指定目录下的文件或者是文件夹的名字
        public boolean accept(File dir, String name) {      
    //      if(name.endsWith(".txt")){
    //          return false;
    //      }
            // 假如是  文件   就 过滤掉, 如果是文件夹 , 就保留
            //  D:\\java上课内容      \\   java新版ppt
            File file = new File(dir,name);
            if(file.isFile()){
                return false;
            }
    
    
            return true;// 返回ture 证明 保留下来的
                        // 返回 false 要被过滤掉的
        }
    
    }
    

    17 .得到指定文件夹下的所有的文件

    package com.qf.demo2;
    
    import java.io.File;
    
    /**
     * 递归
     * 自己调用自己
     * 以此类推
     * 同性质的问题  范围缩小, 直到 结果 可以直接的出来
    
     需求: 得到指定文件夹下的所有的文件
    
    
    计算 指定文件夹  所有文件 和 文件夹的个数
    
     */
    public class Test5 {
    
        public static void main(String[] args) {
    
            findFile(new File("D:\\java上课内容"));
        }
    
        // 得到 指定文件夹下一层的所有的文件和文件
        // // 如果是文件  打印输出, 如果文件夹 
    
        public static void  findFile(File file){// 既可以代表文件也可以代表文件夹
            // 保证非空
            if(file != null){
                // 保证是文件夹
                if(!file.isFile()){
                    // 得到文件夹下的文件或者是 文件夹了
                    File[] files = file.listFiles();// 新版ppt  ppt  .pptx
                    for (File file2 : files) {// 把所有的文件和文件夹遍历一遍
                            findFile(file2);// 无论是文件还是文件夹 都可以调用  此方法
                    }
                }else{
                    System.out.println(file);
                }
            }else{
                System.out.println("闹着玩呢??????");
            }
        }
    }
    
    展开全文
  • File类简介及常用功能

    2018-01-04 10:52:45
    File类简介及常用功能 (1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件 (2)构造方法 A:File file = new File("e:\\demo\\a.txt"); B:File file = new File("e:\\demo","a.txt")...

    File类简介及常用功能

    (1)IO流操作中大部分都是对文件的操作,所以Java就提供了File类供我们来操作文件
        (2)构造方法
            A:File file = new File("e:\\demo\\a.txt");
            B:File file = new File("e:\\demo","a.txt");
            C:File file = new File("e:\\demo");
              File file2 = new File(file,"a.txt");
        (3)File类的功能
            A:创建功能
                public boolean createNewFile();
                public boolean mkdir();
                public boolean mkdirs();
            B:删除功能
                public boolean delete()
            C:重命名功能
                public boolean renameTo(File file)
            D:判断功能
                public boolean isDirectory();
                public boolean isFile();
                public boolean exists();
                public boolean canRead()
                public boolean canWrite()
                public boolean isHidden()
            E:获取功能
                public String getName();
                public String getAbsolutePath();//获取绝对路径,如果file对象中本身就是绝对路径,就和getPath()相同
                public String getPath();
                public long length();
                public long lastModified();
            F:高级获取功能
                public String[] list()
                public File[] listFiles() 
            G:过滤器功能
                public String[] list(FileNameFilter filter)
                public File[] listFiles(FileNameFilter filter)
    展开全文
  • 简述File类的作用 一个File对象而可以代表一个文件或目录, File可以实现获取文件和目录属性等功能, 可以实现对文件和目录的创建,删除等功能 File类操作目录与文件的常用方法有哪些 文件方法: 对象名....

    简述File类的作用

    一个File对象而可以代表一个文件或目录,
    File可以实现获取文件和目录属性等功能,
    可以实现对文件和目录的创建,删除等功能

    File类操作目录与文件的常用方法有哪些

    文件方法:
    对象名.createNewFile()//创建新文件。
    对象名.delete()//直接从磁盘上删除
    对象名.exists()//查询磁盘中的文件是否存在
    对象名.getAbsolutePath()//获取绝对路径
    对象名.getPath()//获取相对路径
    对象名.getName()//获取文件名 相当于调用了一个toString方法。
    对象名.isFile()//判断是否是文件
    对象名.length()//查看文件中的字节数
    目录方法:
    对象名.exists()//查询目录是否存在
    对象名.isDirectory()//查询文件文件夹是否存在
    对象名.isFile()//查询文件是否存在
    对象名.mkdir()//创建单层目录
    对象名.mkdir()//创建多层目录
    对象名.delete()//删除目录
    对象名.getParentFile()//获取cc目录的父级目录。
    对象名.list()//返回一个字符串数组,命名由此抽象路径名表示的目录中的文件和目录。
    对象名.listFiles//返回一个字符串。命名由此抽象路径名表示的目录中的文件和目录。可以获取相对路径和绝对路径,可以对文件进行操作。

    展开全文
  • 【C语言】文件(FILE)

    2019-04-05 23:19:07
    文章目录一、文件1.1 文件类型指针1.2 文件的打开与关闭1.2.1 文件的打开1.2.2 文件的关闭1.3 文件的读写1.3.1 文本文件的读写1.3.1.1 写字符函数fputc和读字符函数fgetc1.3.1. 2 写字符串函数fputs和读字符串函数...

    一、文件

            在程序运行时,常常需要将一些数据(运行的最终结果和中间数据)输出到磁盘上存放起来,以后需要时再从磁盘中输入到计算机内存。这就要用到磁盘文件。
    C语言把文件看作是一个字符(字节)的序列,即一个一个字符(字节)的数据顺序组成。根据数据的组织形式,可分为ASCII文件和二进制文件。ASCII文件又称文本文件,它的每一个字节放一个ASCII代码,代表一个字符。二进制文件是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。
            在过去使用的C版本(如UNIX系统下使用的C)有两种对文件的处理方法:一种叫“缓冲文件系统”,一种叫“非缓冲文件系统”。所谓缓冲文件系统是指系统自动地在内存中为每一个正在使用的文件名开辟一个缓冲区。从内存向磁盘输出数据必须先送到内存中的缓冲区,装满缓冲区后才一起送到磁盘去。如果从磁盘向内存读入数据,则一次从磁盘文件将一批数据输入到内存缓冲区(充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(给程序变量)。缓冲区的大小由各个具体的C版本确定,一般为512字节。

    在这里插入图片描述
    所谓“非缓冲文件系统”是指系统不自动开辟确定大小的缓冲区,而由程序为每个文件设定缓冲区。
    UNIX系统下,用缓冲文件系统来处理文本文件,用非缓冲文件系统处理二进制文件。用缓冲文件系统进行的输入输出又称为高级(或高层)磁盘输入输出(高层I/O),用非缓冲文件系统进行的输入输出又称为低级(低层)输入输出系统。ANSI C标准决定不采用非缓冲文件系统,而只采用缓冲文件系统。即既用缓冲文件系统处理文本文件,也用它来处理二进制文件。也就是将缓冲文件系统扩充为可以处理二进制文件。
    在C语言中,没有输入输出语句,对文件的读写都是用库函数来实现的。ANSI规定了标准输入输出函数,用它们对文件进行读写。

    1.1 文件类型指针

            缓冲文件系统中,关键的概念是“文件指针”。每个被使用的文件都在内存中开辟一个区,用来存放文件的有关信息(如文件的名字、文件状态及文件当前位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是由系统定义的,取名为FILE。

    1.2 文件的打开与关闭

    1.2.1 文件的打开

    在这里插入图片描述

    #include <malloc.h>
    #include <stdio.h>
    // 主函数
    int main(int argc, char *argv[]) // *argv[]:指针数组
    {
      FILE *fp; // 文件指针
      fp = fopen("input.txt","r"); // 打开文件
      read/write fucntions // 读或者写函数
      fclose(fp); // 关闭文件指针
    
      return 0;
    }
    

    说明

    (1)用“r”方式打开的文件只能用于向计算机输入而不能用作向该文件输出数据,而且该文件应该已经存在,不能用“r”方式打开一个并不存在的文件(即输入文件),否则出错。
    (2)用“w”方式打开的文件只能用于向该文件写数据(即输出文件),而不能用来向计算机输入。如果原来不存在该文件,则在打开时新建立一个以指定的名字命名的文件。如果原来已存在一个以该文件名命名的文件,则在打开时将该文件删去,然后重新建立一个新文件。
    (3)如果希望向文件末尾添加新的数据(不希望删除原有数据),则应该用“a”方式打开。但此时该文件必须已存在,否则将得到出错信息。打开时,位置指针移到文件末尾。
    (4)用“r+”、“w+”、 “a+”方式打开的文件既可以用来输入数据,也可以用来输出数据。用“r+”方式时该文件应该已经存在,以便能向计算机输入数据。用“w+”方式则新建立一个文件,先向此文件写数据,然后可以读此文件中的数据。用“a+”方式打开的文件,原来的文件不被删去,位置指针移到文件末尾,可以添加,也可以读。
    (5)如果不能实现“打开”的任务,fopen函数将会带回一个出错信息。出错的原因可能是用“r”方式打开一个并不存在的文件;磁盘出故障;磁盘已满无法建立新文件等。此时fopen函数将带回一个空指针值NULL。	
    (6)在向计算机输入文本文件时,将回车换行符转换为一个换行符,在输出时把换行符转换成为回车和换行两个字符。在用二进制文件时,不进行这种转换,在内存中的数据形式与输出到外部文件中的数据形式完全一致,一一对应。
    (7)在程序开始运行时,系统自动打开3个标准文件:标准输入、标准输出、标准出错输出。这3个文件都与终端相联系。因此以前所用到的从终端输入或输出都不需要打开终端文件。系统自动定义了3个文件指针stdin、stdout和stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。如果程序中指定要从stdin所指的文件输入数据,就是指从终端键盘输入数据。
    

    1.2.2 文件的关闭

    在使用完一个文件后应该关闭它,以防止它再被误用。“关闭”就是使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,以后不能再通过该指针对原来与其相联系的文件进行读写操作。除非再次打开,使该指针变量重新指向该文件。

    1.3 文件的读写

    1.3.1 文本文件的读写

    1.3.1.1 写字符函数fputc和读字符函数fgetc

    1、从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) // *argv[]:指针数组
    {
    
      FILE *fp;
      fp = fopen("input.txt", "r");
      if (fp == NULL)
      {
        exit(1);
      }
    
      char c;
      c = fgetc(fp);
      
      while (c != EOF)
      {
        putchar(c);
        c = fgetc(fp);
      }
    
      return 0;
    }
    
    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) // *argv[]:指针数组
    {
    
      FILE *fp;
      char filename[10]; //文件名
      printf("input file name: ");
      scanf("%s", &filename);
      
    
      if ((fp = fopen(filename, "w")) == NULL)
      {
        exit(1);
      }
    
      
      fflush(stdin); // 将缓冲区内的数据写回参数stream指定的文件中
      printf("input character\n");
      char c;
      c = getchar(); // 输入字符
      while (c != '#') // 判别
      {
        fputc(c, fp);
        c = getchar();
      }
    
      return 0;
    }
    

    在这里插入图片描述

    2、 将一个磁盘文件中的信息复制到另一个磁盘文件中

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) // *argv[]:指针数组
    {
    
      FILE *in, *out;
      char infile[10]; //文件名
      char outfile[10];
    
      printf("enter the infile name:\n");
      scanf("%s", infile);
    
      printf("enter the outfile name:\n");
      scanf("%s", outfile);
    
      if ((in = fopen("input.txt", "rb")) == NULL)
        exit(0);
    
      if ((out = fopen("out.txt", "wb")) == NULL)
        exit(0);
    
      char c;
      c = fgetc(in);
      while (!feof(in)) // 判断文件是否结果
      {                // 判断文件不为空
        fputc(c, out); // 写入到out.txt文件中
        c = fgetc(in); // 循环读取下一个字符
      }
      
    
      fclose(in);
      fclose(out);
    
      return 0;
    }
    
    

    1.3.1. 2 写字符串函数fputs和读字符串函数fgets

    1、将学生数据,由键盘输入并存储到磁盘文件中

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) // *argv[]:指针数组
    {
    
      FILE *fp;
      char student[50]; // 创建字符数组-存储输入的字符串
    
      printf("input filename:");
      scanf("%s", student);
    
      if ((fp = fopen("input.txt", "w")) == NULL)
      {
        exit(1);
      }
    
      for (int i = 0; i < 3; i++)
      {
        gets(student); // 获取输入的字符串
        fputs(student, fp);// 存储到文件fp
        fputs("\n", fp);
    
      }
    
      fclose(fp);
      return 0;
    }
    

    2、从上例文件中读取学生数据,并显示在屏幕上

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) // *argv[]:指针数组
    {
    
      FILE *fp;
      if ((fp = fopen("input.txt", "r")) == NULL)
        exit(0);
    
      char string[80];
      while (fgets(string, 80, fp) != NULL)
      {
        printf("%s", string);
      }
    
      fclose(fp);
      return 0;
    }
    

    1.3.1.3 格式化写函数fprintf和格式化读函数fscanf

    1、将学生数据,由键盘输入并存储到磁盘文件中

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) // *argv[]:指针数组
    {
    
      FILE *fp;
      if ((fp = fopen("input.txt", "w")) == NULL)
        exit(0);
    
      long num;
      char name[10];
      int age;
    
      for (int i = 0; i < 5; i++) {
    
        printf("第%d个学生:\n", i + 1);
        printf("学号:\n");
        scanf("%ld", &num);
    
        printf("姓名:\n");
        scanf("%s", &name);
    
        printf("年龄:\n");
        scanf("%d", &age);
    
        fprintf(fp, "学号:%ld 姓名:%9s 年龄:%d\n", num, name, age);
      }
    
      fclose(fp);
    
      return 0;
    }
    

    2、从上例文件中读取学生数据,并显示在屏幕上

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) {
      FILE *fp;
    
      if ((fp = fopen("student.txt", "r")) == NULL)
        exit(0);
    
      long num;
      char name[10];
      int age;
    
      while (!feof(fp)) {
    
        // fprintf(fp, "学号:%ld 姓名:%9s 年龄:%d\n", num, name, age);
        fscanf(fp, "学号:%ld 姓名:%9s 年龄:%d\n", &num, name, &age);
        printf("%ld %s %d\n", num, name, age);
      }
    
      fclose(fp);
    
      return 0;
    }
    
    

    1.3.2 二进制文件的读写

    1.3.1 fread函数和fwrite函数

    从键盘输入4个学生数据,然后把它们转存到磁盘文件上去,然后再从磁盘文件中一次性读入内存并显示出来

    #include <stdio.h>
    #include <stdlib.h>
    
    struct student
    {
      long num;
      char name[10];
      int age;
    } s[4];
    
    // 主函数
    int main(int argc, char *argv[])
    {
      FILE *fp;
    
      if ((fp = fopen("student.dat", "w")) == NULL)
        exit(0);
    
      for (int i = 0; i < 4; i++)
      {
        printf("第%d个学生:\n", i + 1);
        printf("学号:\n");
        scanf("%ld", &s[i].num);
        printf("姓名:\n");
        scanf("%s", s[i].name);
        printf("年龄:\n");
        scanf("%d", &s[i].age);
      }
    
      fwrite(s, sizeof(struct student), 4, fp);
    
      rewind(fp);
      // for (int i = 0; i < 4; i++)
      // {
      //   fread(&s, sizeof(struct student), 1, fp);
      //   printf("%ld %s %d\n", s->num, s->name, s->age);
      // }
    
      fread(s, sizeof(struct student), 4, fp);
      for (int i = 0; i < 4; i++)
      {
        printf("%ld %s %d\n", s[i].num, s[i].name, s[i].age);
      }
    
      fclose(fp);
      return 0;
    }
    
    

    1.3.3 文件的定位

    文件中有一个位置指针,指向当前读写的位置。如果顺序读写一个文件,每次读写一个字符,则读写完一个字符后,该位置指针自动移动指向下一个字符位置。如果想改变这样的规律,强制使位置指针指向其他指定的位置,可以用有关函数。

    1.3.3.1 rewind()函数

    rewind函数的作用是使位置指针重新返回文件的开头,此函数没有返回值。
    有一个磁盘文件,第一次将它的内容显示在屏幕上,第二次把它复制到另一文件上

    /*
     * @Author: jjk
     * @Date: 2019-03-31 10:02:20
     * @Last Modified by: jjk
     * @Last Modified time: 2019-04-02 13:15:13
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    struct student
    {
      long num;
      char name[10];
      int age;
    } s[4];
    
    // 主函数
    int main(int argc, char *argv[])
    {
      FILE *fp;
    
      if ((fp = fopen("input.txt", "r")) == NULL)
        exit(0);
    
      char c;
      c = fgetc(fp);
      while (!feof(fp))
      {
    
        printf("%c", c);
        c = fgetc(fp);
      }
    
      FILE *fp2;
      if ((fp2 = fopen("student2.txt", "w")) == NULL)
        exit(0);
    
      rewind(fp); // 重置文件指针
    
      c = fgetc(fp);
      while (!feof(fp))
      {
        fputc(c, fp2);
        c = fgetc(fp);
      }
    
      fclose(fp);
      fclose(fp2);
    
      fclose(fp);
      return 0;
    }
    
    

    1.3.3.2 fseek()函数和随机读写

    对流式文件可以进行顺序读写,也可以进行随机读写,关键在于控制文件的位置指针。如果位置指针是按字节位置顺序移动的,就是顺序读写;如果能将位置指针按需要移动到任意位置,就可以实现随机读写。所谓随机读写,是指读写完上一个字符(字节)后,并不一定要读写其后的字符(字节),而可以读写文件中任意位置上所需要的字符(字节)。

    	用fseek函数可以实现改变文件的位置指针。
    	在磁盘文件上存有10个学生的数据。要求将第1、3、5、7、9个学生数据输入计算机,并在屏幕上显示出来
    
    /*
     * @Author: jjk
     * @Date: 2019-03-31 10:02:20
     * @Last Modified by: jjk
     * @Last Modified time: 2019-04-02 13:15:13
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    struct student
    {
      long num;
      char name[10];
      int age;
    } s[10];
    
    // 主函数
    int main(int argc, char *argv[])
    {
    
      FILE *fp;
    
      if ((fp = fopen("student.dat", "w+")) == NULL)
        exit(0);
    
      for (int i = 0; i < 10; i++)
      {
        printf("第%d个学生:\n", i + 1);
        printf("学号:\n");
        scanf("%ld", &s[i].num);
        printf("姓名:\n");
        scanf("%s", s[i].name);
        printf("年龄:\n");
        scanf("%d", &s[i].age);
      }
    
      fwrite(s, sizeof(struct student), 10, fp);
    
      struct student stu;
    
      for (int i = 1; i <= 9; i = i + 2)
      {
        fseek(fp, (i - 1) * sizeof(struct student), SEEK_SET);
        fread(&stu, sizeof(struct student), 1, fp);
        printf("%ld %s %d\n", stu.num, stu.name, stu.age);
      }
    
      fclose(fp);
    
      return 0;
    }
    
    

    在这里插入图片描述

    1.3.3.3 ftell()函数

    ftell函数的作用是得到流失文件中的当前位置,用相对于文件开头的位移量来表示。由于文件中的位置指针经常移动,往往不容易知道其当前位置。用ftell函数可以得到当前位置。

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[])
    {
    
      FILE *stream;
    
      long position;
      char list[100];
      if ((stream = fopen("7-4-1.avi", "rb")) != NULL) // 二进制文件
      {
        // Move the pointer by reading data:
        fread(list, sizeof(char), 100, stream);
        // Get position after read:
        position = ftell(stream); // 获取当前指针位置
        printf("Position after trying to read 100 bytes: %ld\n", position);
        fclose(stream);
      
      }
    
      fclose(stream);
    
      return 0;
    }
    
    
    

    1.4 文件的检测

    1.4.1 ferror()函数

    1.4.2 clearerr函数

    #include <stdio.h>
    #include <stdlib.h>
    
    // 主函数
    int main(int argc, char *argv[]) {
    
      int count, total = 0;
      char buffer[100];
      FILE *stream;
    
      long position;
      char list[100];
    
      if ((stream = fopen("input.txt", "r")) == NULL)
        exit(1);
    
      int c;
      putc('c', stdin); //标准写入
      if (ferror(stdin)) {
        perror("Write error");
        //clearerr(stdin); // 清除这个错误:标准的输入文件处于正常状态
      }
    
      
      /* See if read causes an error. */
      printf("Will input cause an error? ");
      c = getc(stdin);
      if (ferror(stdin)) {
        perror("Read error");
        clearerr(stdin);
      }
    
      fclose(stream);
    
      return 0;
    }
    

    在这里插入图片描述

    1.5 总结

    在这里插入图片描述

    展开全文
  • File的三种构造方法

    2018-09-28 10:55:34
     File(File parent, String child),从父抽象路径名和子路径名字符串创建新的 File实例; File filePath = new File("E:"+File.separator+"Test"); File fs = new File(filePath, "...
  • FILE *f 是什么意思?

    2018-05-14 22:15:54
    FILE *f; FILE 是变量类型,实际上是C语言定义的标准数据结构,用于文件。FILE *f 是声明,声明f是指针,用来指向FILE类型的对象。
  • JAVA基础知识之File

    2018-07-13 10:46:30
    一、File类定义 1. File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类 2. File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较public class File ...
  • 1. 需要了解的概念 需要理解的知识点包括:数据流、缓冲区、文件类型、文件存取方式 1.1 数据流: 指程序与数据的交互是以流的形式进行的。进行C语言文件的存取时,都会先进行“打开文件”操作,这个操作就是在...
  • Java中的File文件类详解文件操作在Java的io操作中占有十分重要的地位,本文从以下几个方面来接受Java中对文件的操作。 1. Java中新建或者删除一个文件,文件夹以及createNewFile(),delete(),mkdir(),mkdirs()函数的...
  • File类中有两个ListFiles重载的方法: File[] ListFiles(FileFilter filter) java.io.FileFilter接口:用于抽象路径名(File对象)的方法 用来过滤File对象 抽象方法:用来过滤文件的方法 boolean accept(File ...
  • js清空input file的值

    2020-08-10 10:13:45
    今天在做选择本地图片上传的功能时遇到一个问题,第一次选择图片完成会触发onchange事件,获取文件后动态在界面上创建img标签展示,这个过程没有问题,问题出在当把创建的img元素节点删除后,再点file控件选中同一个...
  • 该元素的 value 属性保存了用户指定的文件的名称,但是当包含一个 file-upload 元素的表单被提交的时候,浏览器会向服务器发送选中的文件的内容而不仅仅是发送文件名。 当用户选择或编辑一个文件名,file-upload ...
  • 我们都知道,html5中有个input type=file元素。用该元素可以实现页面上传文件的功能 但一般的做法只是简单的在表单中操作,我来研究一下深层东西 ...$("input[name='file1']").change( function(e){ console.log...
  • 一.IIS Noinput file specified 方法一:改PHP.ini中的doc_root行,打开ini文件注释掉此行,然后重启IIS 方法二: 请修改php.ini 找到 ; cgi.force_redirect = 1 去掉前面分号,把后面的1改为0 即 cgi....
  • 关于Java的File.separator

    2012-07-13 10:39:05
    在Windows下的路径分隔符和Linux下的路径分隔符是不一样的,当直接使用绝对路径时,跨平台会暴出“No such file or diretory”的异常。   比如说要在temp目录下建立一个test.txt文件,在Windows下应该这么写: ...
  • 1290 – The MySQL server is running with the –secure-file-priv option so it cannot execute this statement secure-file-priv特性 secure-file-priv参数是用来限制LOAD DATA, SELECT … OUTFILE, and LOAD_...
  • file"&gt;的样式是很难修改的,事实上也是,bootstrap也没用对其有什么美化,但是那么丑,要怎么修改呢? 其实很简单!!!很多人都想复杂了。 先卖个关子,有些人是这么做的,另外写一个按钮的样式,...
  • NumPy提供了多种存取数组内容的文件操作函数。...tofile()将数组中的数据以二进制格式写进文件tofile()输出的数据不保存数组形状和元素类型等信息fromfile()函数读回数据时需要用户指定元素类型,并对数组的形
  • 1. jquery file upload 下载 jquery file upload Demo 地址:https://blueimp.github.io/jQuery-File-Upload/ jquery file upload 下载 地址:https://github.com/blueimp/jQuery-File-Upload/tags jquery ...
  • File:抽象的描述了磁盘路径(创建一个具体的对象==>指定路径 但是该路径的文件或者文件夹不一定在磁盘真的存在!!!) 一个File对象就是一个具体的文件或者目录(目的:指定文件或文件夹保存的路径)如何得到一个具体...
1 2 3 4 5 ... 20
收藏数 4,577,864
精华内容 1,831,145
关键字:

file