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] 
收起全文
精华内容
下载资源
问答
  • file
    万次阅读
    2018-11-23 11:11:42

    file:文件操作命令.
     

    file(WRITE filename "message towrite"... )

    WRITE 将一则信息写入文件’filename’中,如果该文件存在,它会覆盖它,如果不存在,它会创建该文件。


    file(APPEND filename "message to write"... )

    APPEND 如同WRITE,区别在于它将信息内容追加到文件末尾。

     

    file(READ filename variable [LIMIT numBytes] [OFFSEToffset] [HEX])

    READ 会读取文件的内容并将其存入到变量中。它会在给定的偏移量处开始读取最多numBytes个字节。如果指定了HEX参数,二进制数据将会被转换成十进制表示形式并存储到变量中。


    file(<MD5|SHA1|SHA224|SHA256|SHA384|SHA512> filenamevariable)

    MD5, SHA1, SHA224, SHA256, SHA384, 和SHA512 会计算出文件内容对应的加密散列。


    file(STRINGS filename variable [LIMIT_COUNT num]
         [LIMIT_INPUT numBytes] [LIMIT_OUTPUTnumBytes]
         [LENGTH_MINIMUM numBytes] [LENGTH_MAXIMUMnumBytes]
         [NEWLINE_CONSUME] [REGEX regex]
         [NO_HEX_CONVERSION])

    STRINGS 从文件中解析出ASCII字符串列表并存储在变量中。文件中的二进制数据将被忽略。回车符(CR)也会被忽略。也能解析Intel Hex和Motorola S-record文件,这两种文件在读取是会自动转换为二进制格式,可以使用参数NO_HEX_CONVERSION 禁用这种自动转换。LIMIT_COUNT设置可返回的最大数量的字符串。LIMIT_INPUT 设置从输入文件中可读取的最大字节数。LIMIT_OUTPUT设置了存储在输出变量中最大的字节数。 LENGTH_MINIMUM设置了返回的字符串的最小长度。小于这个长度的字符串将被忽略。 LENGTH_MAXIMUM 设置返回的字符串的最大长度。大于这个长度的字符串将被切分为长度不大于于最大长度值的子字符串。NEWLINE_CONSUME 允许换行符包含进字符串中而不是截断它们。REGEX 指定了返回的字符串必须匹配的正则表达式的模式。典型用法

    file(STRINGS myfile.txt myfile), 将输入文件的每行内容存储在变量"myfile"中。


    file(GLOB variable [RELATIVE path] [globbingexpressions]...)

    GLOB 会产生一个由所有匹配globbing表达式的文件组成的列表,并将其保存到变量中。Globbing 表达式与正则表达式类似,但更简单。如果指定了RELATIVE 标记,返回的结果将是与指定的路径相对的路径构成的列表。 (通常不推荐使用GLOB命令来从源码树中收集源文件列表。原因是:如果CMakeLists.txt文件没有改变,即便在该源码树中添加或删除文件,产生的构建系统也不会知道何时该要求CMake重新产生构建文件。globbing 表达式包括:

       *.cxx     - match all files with extension cxx
       *.vt?      - match all files with extension vta,...,vtz
       f[3-5].txt - match files f3.txt,f4.txt, f5.txt


    file(GLOB_RECURSE variable [RELATIVE path] 
         [FOLLOW_SYMLINKS] [globbingexpressions]...)

    GLOB_RECURSE 与GLOB类似,区别在于它会遍历匹配目录的所有文件以及子目录下面的文件。对于属于符号链接的子目录,只有FOLLOW_SYMLINKS指定一或者cmake策略CMP0009没有设置为NEW时,才会遍历这些目录。

    Examples of recursive globbing include:

       /dir/*.py - match all python files in /dir and subdirectories

     

    file(RENAME <oldname> <newname>)

    RENAME 将文件系统中的文件或目录移动到目标位置,并自动替换目标位置处的文件或目录。

     

    file(REMOVE [file1 ...])

    REMOVE 会删除指定的文件以及子目录下的文件。 
     

    file(REMOVE_RECURSE [file1 ...])

    REMOVE_RECURSE 会删除指定的文件及子目录,包括非空目录。

     

    file(MAKE_DIRECTORY [directory1 directory2 ...])

    MAKE_DIRECTORY在指定目录处创建子目录,如果它们的父目录不存在,也会创建它们的父目录。


    file(RELATIVE_PATH variable directory file)

    RELATIVE_PAT推断出指定文件相对于特定目录的路径。


    file(TO_CMAKE_PATH path result)

    TO_CMAKE_PATH会将路径转换成cmake风格的路径表达形式。


    file(TO_NATIVE_PATH path result)

    TO_NATIVE_PATH与TO_CMAKE_PATH类似,但执行反向操作,将cmake风格的路径转换为操作系统特定风格的路径表式形式。


    file(DOWNLOAD url file [INACTIVITY_TIMEOUT timeout]
         [TIMEOUT timeout] [STATUS status] [LOGlog] [SHOW_PROGRESS]
         [EXPECTED_MD5 sum])

    DOWNLOAD下载指定URL的资源到指定的文件上。如果指定了LOG 参数,将会把下载的日志保存到相应的变量中。如果指定了STATUS变量,操作的状态信息就会保存在相应的变量中。返回的状态是一个长度为2的列表。第一个元素是操作的返回值。0表示操作过程中无错误发生。如果指定了TIMEOUT,单位于秒,且必须为整数,那么在指定的时间后,操作将会超时,INACTIVITY_TIMEOUT指定了操作在处于活动状态超过指定的秒数后,应该停止。如果指定了EXPECTED_MD5,如果操作会检验下载后的文件的实际md5校验和是否与预期的匹配,如果不匹配,操作将会失败,并返回相应的错误码。如果指定了 SHOW_PROGRESS,那么进度的信息将会被打印成状态信息直到操作完成。

    file(UPLOADfilename url [INACTIVITY_TIMEOUT timeout]
         [TIMEOUT timeout] [STATUS status][LOG log] [SHOW_PROGRESS])

    UPLOAD与DOWNLOAD类似,它执行的是一个上传操作。参数含义与DOWNLOAD 一致。

     

    file(<COPY|INSTALL> files... DESTINATION<dir>
         [FILE_PERMISSIONS permissions...]
         [DIRECTORY_PERMISSIONSpermissions...]
         [NO_SOURCE_PERMISSIONS][USE_SOURCE_PERMISSIONS]
         [FILES_MATCHING]
         [[PATTERN <pattern> | REGEX<regex>]
         [EXCLUDE] [PERMISSIONSpermissions...]] [...])

    COPY表示复制文件,目录以及符号链接到一个目标文件夹中。输入路径将视为相对于当前源码目录的路径。目标路径则是相对于当前的构建目录。复制保留输入文件的一些权限属性,

    除非显式指定了NO_SOURCE_PERMISSIONS(默认是USE_SOURCE_PERMISSIONS),关于文件权限,PATTERN,REGX和EXCLUDE等相关选项可参考install(DIRECTORY)命令的文档。 

    INSTALL 与COPY略微有点不同:它打印状态信息,并且默认情况下指定了 NO_SOURCE_PERMISSIONS。

     

    测试例子:

    message(STATUS "current dir: ${CMAKE_CURRENT_SOURCE_DIR}")  
    file(WRITE test1.txt "Some messages to Write\n" )  
    file(APPEND test1.txt "Another message to write\n")  
    file(READ test1.txt CONTENTS LIMIT 4 OFFSET 12)  
    message(STATUS "contents of test1.txt is: \n ${CONTENTS}")  
    file(MD5 ${CMAKE_CURRENT_SOURCE_DIR}/test1.txt HASH_CONTENTS)  
    message(STATUS "hash contents of test1.txt is: \n ${HASH_CONTENTS}")  
    file(STRINGS test1.txt PARSED_STRINGS)  
    message(STATUS "\n strings of test1.txt is: \n ${PARSED_STRINGS}")  
    file(GLOB files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.*")  
    message(STATUS  "files: ${files}")  
    file(MAKE_DIRECTORY dir1 dir2)  
    file(RENAME dir2 dir3)  
    file(REMOVE dir3)  
    file(REMOVE_RECURSE dir3)  
    file(RELATIVE_PATH relative_path ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/test1.txt)  
    message(STATUS "relative path : ${relative_path}")  
    file(TO_CMAKE_PATH "$ENV{PATH}" cmake_path)  
    message(STATUS "cmake path: ${cmake_path}")  
    file(TO_NATIVE_PATH "/usr/local/sbin;/usr/local/bin" native_path)  
    message(STATUS "native path: ${native_path}")  
    file(DOWNLOAD "http://www.baidu.com" ${CMAKE_CURRENT_SOURCE_DIR}/index.html SHOW_PROGRESS)  
    file(COPY test1.txt DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/dir1)  
    file(INSTALL test1.txt DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/dir1)  

    http://blog.csdn.net/fuyajun01/article/details/8880121

    更多相关内容
  • Android File Transfer for MAC 下载

    热门讨论 2017-02-23 17:02:03
    MAC上查看安卓手机利器!
  • js获取 input file 图片立即显示

    热门讨论 2014-12-05 10:20:12
    js获取input file控件选择的图片 并且立即在img标签显示出来
  • //要么是全路径 File file = new File("D:\\java\\content\\eclipse-win64\\S\\java\\fd.properties"); //要么是去在全路径基础上去掉项目名 File file2 = new File("java\\fd.properties"); File file3 = new File...

    项目的结构:相同颜色是同级的

    88a62acb62d2081050da2ee7afb09149.png

    0af8df829a30df675d1c60ba6f78170a.png

    7bcc5e37a2b980f26e0ac9c664e34af2.png

    bean的配置文件的读取和一般文件的读取有点差别的

    07e771f0646271db6040884bae3fd6be.png

    public static void getValue(String key){ //传入"time"

    Properties prop = new Properties();

    Properties prop2 = new Properties();

    Properties prop3 = new Properties();

    //要么是全路径

    File file = new File("D:\\java\\content\\eclipse-win64\\S\\java\\fd.properties");

    //要么是去在全路径基础上去掉项目名

    File file2 = new File("java\\fd.properties");

    File file3 = new File("fd2.properties");

    try {

    //装载配置文件

    prop.load(new FileInputStream(file));

    prop2.load(new FileInputStream(file2));

    prop3.load(new FileInputStream(file3));

    } catch (IOException e) {

    e.printStackTrace();

    }

    //返回获取的值

    System.out.println(prop.getProperty(key)

    + prop2.getProperty(key)+prop3.getProperty(key));

    }8 8 9

    fd.properties的内容

    4d3a2cb5b2f6a0f8083a5a2005091f09.png

    2a7dd0568220559f84436cfa37e58ab3.png

    项目名是 S

    419a5ffc3ecbdade86155eabbf75a9a2.png  

    fff7f2a1ff9ddc320743171e650f642a.png

    点开bin文件夹

    638d68f2c841fafeae6793f80bc78fdf.png

    注意这个fd.properties文件

    发现:

    只有在src或者java文件夹下的java文件或资源文件才会编译,然后通过打包,会复制到commlib中

    后面有2个ok

    /*

    1.绝对路径

    a.带盘符,如E:/book.xml

    b.以http开头,http://img.baidu.com/img/book.jpg

    2.相对路径

    a.带"/"开头,如/book.xml

    b.不带"/"开头,如book.xml

    现在项目结构如下,在ParseXML类中操作,我实验项目System.getProperty("user.dir")=E:\ProjectTest\javaEE\

    绝对路径:

    new

    File("E:/ProjectTest/javaEE/src/com/ly/javaee/xml/dom4j/book.xml")---OK

    相对路径

    new

    File("book.xml")----报错(此时相当于System.getProperty("user.dir")+"book.xml",这是文件book.xml不存在user.dir下面)

    new File("src/com/ly/javaee/xml/dom4j/book.xml")----OK(不带"/"

    可见在项目中相对的是以项目名为根路径,此时相当于System.getProperty("user.dir")+"src/com/ly/javaee/xml/dom4j/book.xml")

    new File("/book.xml")----以下可以看出本JVM运行在E盘下,此时带"/"就相当于"E:/book.xml",JVM运行在哪个盘符就以哪个为根路径

    new

    File("./book.xml");---报错(同new File("book.xml")效果)

    随机推荐

    Excel筛选之后如何下拉递增

    1.痛点 Excel表格,通过筛选了之后,再想统计行数,通过单纯的拖动或者填充排序啥的,都无法做到排序或行数递增: 2.解决方案 发现了个excel的公式可以完美解决该问题,赞个,找的好辛苦. 3.大 ...

    ubuntu下安装JDK并搭建activeMQ

    1.安装JDK,网上有人说activeMQ支持持JDK1.7及以上版本,未实际测试,保险起见我这里直接安装JDK1.7. #apt-get install openjdk--jdk 2.设置环境变量 ...

    细说new与malloc的10点区别

    前言 几个星期前去面试C++研发的实习岗位,面试官问了个问题: new与malloc有什么区别? 这是个老生常谈的问题.当时我回答new从自由存储区上分配内存,malloc从堆上分配内存:new/de ...

    RESULT&colon;0x80029C4A &lpar;TYPE&lowbar;E&lowbar;CANTLOADLIBRARY&rpar;&rpar;

    无法将类型为"Microsoft.Office.Interop.Excel.ApplicationClass"的 COM 对象强制转换为接口类型"Microsoft.Of ...

    LLVM

    http://blog.csdn.net/snsn1984/article/details/41077763

    svn Error&colon; post-commit hook failed &lpar;exit code 127&rpar; with output

    Command: Commit Modified: C:\Users\xsdff\Desktop\project\index.html Sending content: C:\Users\xsdff\ ...

    phonegap archive 报错 Cordova&sol;CDVViewController&period;h&&num;39&semi; file not found

    在BuildSettings->Header Search Paths  增加如下路径,问题解决 $(OBJROOT)/UninstalledProducts/include "$(O ...

    由链表初始化看C语言的二级指针

    先来看C语言创建链表.插入节点和遍历链表的一段代码: #include #include typedef int ElemType; ...

    java对象引用传递和值传递的一些总结

    1.对象作为函数的参数传递过去的时候,是以原对象的引用的方式传递的,更改参数对象的值,会影响原来的对象. 2.对象作为函数的返回值的时候,传递过来的也是一个引用传递,更改传递过来的对象的时候,会影响原 ...

    C&plus;&plus;利用不完全实例化来获得函数模板参数的返回值和参数

    有一些模板会以函数为模板参数,有时候这些模板要获得函数的返回值和参数.如在boost中的signal和slot机制,就存在这样情况. 那么,我们如何得到这些信息呢? 我们使用C++不完全实例化来实现. ...

    展开全文
  • 文章目录 概述 构造方法 常用方法 ‍♂️获取功能的方法 ⛷️绝对路径和相对路径 ‍♂️判断功能的方法 ‍♂️创建删除功能的方法 ‍♀️目录的遍历 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于...

    🛀概述

    java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。

    👫构造方法

    • public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
    • public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
    • public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
    • 构造举例,代码如下:
    // 文件路径名
    String pathname = "D:\\aaa.txt";
    File file1 = new File(pathname); 
    
    // 文件路径名
    String pathname2 = "D:\\aaa\\bbb.txt";
    File file2 = new File(pathname2); 
    
    // 通过父路径和子路径字符串
     String parent = "d:\\aaa";
     String child = "bbb.txt";
     File file3 = new File(parent, child);
    
    // 通过父级File对象和子路径字符串
    File parentDir = new File("d:\\aaa");
    String child = "bbb.txt";
    File file4 = new File(parentDir, child);
    

    💡小贴士:

    1. 一个File对象代表硬盘中实际存在的一个文件或者目录。
    2. 无论该路径下是否存在文件或者目录,都不影响File对象的创建。

    🏊常用方法

    🏄‍♂️获取功能的方法

    • public String getAbsolutePath() :返回此File的绝对路径名字符串。
    • public String getPath() :将此File转换为路径名字符串。
    • public String getName() :返回由此File表示的文件或目录的名称。
    • public long length() :返回由此File表示的文件的长度。
      方法演示,代码如下:
    public class FileGet {
        public static void main(String[] args) {
            File f = new File("d:/aaa/bbb.java");     
            System.out.println("文件绝对路径:"+f.getAbsolutePath());
            System.out.println("文件构造路径:"+f.getPath());
            System.out.println("文件名称:"+f.getName());
            System.out.println("文件长度:"+f.length()+"字节");
    
            File f2 = new File("d:/aaa");     
            System.out.println("目录绝对路径:"+f2.getAbsolutePath());
            System.out.println("目录构造路径:"+f2.getPath());
            System.out.println("目录名称:"+f2.getName());
            System.out.println("目录长度:"+f2.length());
        }
    }
    
    输出结果:
    文件绝对路径:d:\aaa\bbb.java
    文件构造路径:d:\aaa\bbb.java
    文件名称:bbb.java
    文件长度:636字节
    
    目录绝对路径:d:\aaa
    目录构造路径:d:\aaa
    目录名称:aaa
    目录长度:4096
    

    API中说明:length(),表示文件的长度。但是File对象表示目录,则返回值未指定。

    ⛷️绝对路径和相对路径

    • 绝对路径:从盘符开始的路径,这是一个完整的路径。
    • 相对路径:相对于项目目录的路径,这是一个便捷的路径,开发中经常使用。
    public class FilePath {
        public static void main(String[] args) {
          	// D盘下的bbb.java文件
            File f = new File("D:\\bbb.java");
            System.out.println(f.getAbsolutePath());
          	
    		// 项目下的bbb.java文件
            File f2 = new File("bbb.java");
            System.out.println(f2.getAbsolutePath());
        }
    }
    输出结果:
    D:\bbb.java
    D:\idea_project_test4\bbb.java
    

    🚣‍♂️判断功能的方法

    • public boolean exists() :此File表示的文件或目录是否实际存在。
    • public boolean isDirectory() :此File表示的是否为目录。
    • public boolean isFile() :此File表示的是否为文件。

    方法演示,代码如下:

    public class FileIs {
        public static void main(String[] args) {
            File f = new File("d:\\aaa\\bbb.java");
            File f2 = new File("d:\\aaa");
          	// 判断是否存在
            System.out.println("d:\\aaa\\bbb.java 是否存在:"+f.exists());
            System.out.println("d:\\aaa 是否存在:"+f2.exists());
          	// 判断是文件还是目录
            System.out.println("d:\\aaa 文件?:"+f2.isFile());
            System.out.println("d:\\aaa 目录?:"+f2.isDirectory());
        }
    }
    输出结果:
    d:\aaa\bbb.java 是否存在:true
    d:\aaa 是否存在:true
    d:\aaa 文件?:false
    d:\aaa 目录?:true
    

    🤽‍♂️创建删除功能的方法

    • public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
    • public boolean delete() :删除由此File表示的文件或目录。
    • public boolean mkdir() :创建由此File表示的目录。
    • public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录。

    方法演示,代码如下:

    public class FileCreateDelete {
        public static void main(String[] args) throws IOException {
            // 文件的创建
            File f = new File("aaa.txt");
            System.out.println("是否存在:"+f.exists()); // false
            System.out.println("是否创建:"+f.createNewFile()); // true
            System.out.println("是否存在:"+f.exists()); // true
    		
         	// 目录的创建
          	File f2= new File("newDir");	
            System.out.println("是否存在:"+f2.exists());// false
            System.out.println("是否创建:"+f2.mkdir());	// true
            System.out.println("是否存在:"+f2.exists());// true
    
    		// 创建多级目录
          	File f3= new File("newDira\\newDirb");
            System.out.println(f3.mkdir());// false
            File f4= new File("newDira\\newDirb");
            System.out.println(f4.mkdirs());// true
          
          	// 文件的删除
           	System.out.println(f.delete());// true
          
          	// 目录的删除
            System.out.println(f2.delete());// true
            System.out.println(f4.delete());// false
        }
    }
    

    💡API中说明:delete方法,如果此File表示目录,则目录必须为空才能删除。

    🤹‍♀️目录的遍历

    • public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录。
    • public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录。
    public class FileFor {
        public static void main(String[] args) {
            File dir = new File("d:\\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);
            }
        }
    }
    

    💡小贴士:
    调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。

    相关文章:
    Java流处理之高效读写的缓冲流
    Java流处理之转换编码的转换流
    Java流处理之序列化和打印流

    展开全文
  • MultipartFile与File的一些事

    万次阅读 多人点赞 2019-01-05 17:29:27
    在实现这个需求的过程中就用得到了MultipartFile与File,而且我对前一个也不是很熟悉。记录一下 什么是MultipartFile MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。...

    前言

    前段时间碰到了中转文件的需求,需要使用HttpClient中转一下文件,过程为:
    描述信息
    在实现这个需求的过程中就用得到了MultipartFile与File,而且我对前一个也不是很熟悉。记录一下

    什么是MultipartFile

    MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。【来自百度知道】

    MultipartFile 与 File 的 互相转换

    1. File转MultipartFile

    (1):使用org.springframework.mock.web.MockMultipartFile 需要导入spring-test.jar

    public static void main(String[] args) throws Exception {
            String filePath = "F:\\test.txt";
            File file = new File(filePath);
            FileInputStream fileInputStream = new FileInputStream(file);
            // MockMultipartFile(String name, @Nullable String originalFilename, @Nullable String contentType, InputStream contentStream)
            // 其中originalFilename,String contentType 旧名字,类型  可为空
            // ContentType.APPLICATION_OCTET_STREAM.toString() 需要使用HttpClient的包
            MultipartFile multipartFile = new MockMultipartFile("copy"+file.getName(),file.getName(),ContentType.APPLICATION_OCTET_STREAM.toString(),fileInputStream);
            System.out.println(multipartFile.getName()); // 输出copytest.txt
        }
    
    

    (2):使用CommonsMultipartFile

    public static void main(String[] args) throws Exception {
            String filePath = "F:\\test.txt";
            File file = new File(filePath);
            // 需要导入commons-fileupload的包
            FileItem fileItem = new DiskFileItem("copyfile.txt", Files.probeContentType(file.toPath()),false,file.getName(),(int)file.length(),file.getParentFile());
            byte[] buffer = new byte[4096];
            int n;
            try (InputStream inputStream = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()){
               while ( (n = inputStream.read(buffer,0,4096)) != -1){
                   os.write(buffer,0,n);
               }
                //也可以用IOUtils.copy(inputStream,os);
                MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
                System.out.println(multipartFile.getName());
            }catch (IOException e){
                e.printStackTrace();
            }
    
        }
    
    2. MultipartFile转File

    (1):使用File转MultipartFile的逆过程
    你在看这个代码的时候会觉得很熟悉,是的这个就是File转MultipartFile的逆转过程,这个方法会在根目录生成一个文件,需要删除该文件。

     public static void main(String[] args) throws Exception {
            int n;
            // 得到MultipartFile文件
            MultipartFile multipartFile = getFile();
            File f = null;
            // 输出文件的新name 就是指上传后的文件名称
            System.out.println("getName:"+multipartFile.getName());
            // 输出源文件名称 就是指上传前的文件名称
            System.out.println("Oriname:"+multipartFile.getOriginalFilename());
            // 创建文件
            f = new File(multipartFile.getOriginalFilename());
            try ( InputStream in  = multipartFile.getInputStream(); OutputStream os = new FileOutputStream(f)){
                // 得到文件流。以文件流的方式输出到新文件
                // 可以使用byte[] ss = multipartFile.getBytes();代替while
                byte[] buffer = new byte[4096];
                while ((n = in.read(buffer,0,4096)) != -1){
                    os.write(buffer,0,n);
                }
                // 读取文件第一行
                BufferedReader bufferedReader = new BufferedReader(new FileReader(f));
                System.out.println(bufferedReader.readLine());
                // 输出路径
                bufferedReader.close();
            }catch (IOException e){
                e.printStackTrace();
            }
            // 输出file的URL
            System.out.println(f.toURI().toURL().toString());
            // 输出文件的绝对路径
            System.out.println(f.getAbsolutePath());
            // 操作完上的文件 需要删除在根目录下生成的文件
            File file = new File(f.toURI());
            if (file.delete()){
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败");
    
            }
    
        }
        /**
         *
         * @Description 返回MultipartFile文件
         * @return org.springframework.web.multipart.MultipartFile
         * @date 2019/1/5 11:08
         * @auther dell
         */
        public static MultipartFile getFile() throws IOException {
            String filePath = "F:\\test.txt";
            File file = new File(filePath);
            FileItem fileItem = new DiskFileItem("copyfile.txt", Files.probeContentType(file.toPath()),false,file.getName(),(int)file.length(),file.getParentFile());
            byte[] buffer = new byte[4096];
            int n;
            try (InputStream inputStream = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()){
                while ( (n = inputStream.read(buffer,0,4096)) != -1){
                    os.write(buffer,0,n);
                }
                //也可以用IOUtils.copy(inputStream,os);
                MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
                System.out.println(multipartFile.getName());
                return multipartFile;
            }catch (IOException e){
                e.printStackTrace();
            }
            return null;
        }
    

    (2):使用transferTo (本质上还是使用了流 只不过是封装了步骤)
    会生成文件,最后不需要文件要删除

    public static void main(String[] args) throws Exception {
            String path = "F:\\demo\\";
            File file = new File(path,"demo.txt");
            // 得到MultipartFile文件
            MultipartFile multipartFile = getFile();
            /*byte[] ss = multipartFile.getBytes();
            OutputStream os = new FileOutputStream(file);
            os.write(ss);
            os.close();*/
            multipartFile.transferTo(file);
            // 读取文件第一行
            BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
            System.out.println(bufferedReader.readLine());
            // 输出绝对路径
            System.out.println(file.getAbsolutePath());
            bufferedReader.close();
            // 操作完上的文件 需要删除在根目录下生成的文件
            if (file.delete()){
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败");
    
            }
        }
        /**
         *
         * @Description 返回MultipartFile文件
         * @return org.springframework.web.multipart.MultipartFile
         * @date 2019/1/5 11:08
         * @auther dell
         */
        public static MultipartFile getFile() throws IOException {
            String filePath = "F:\\test.txt";
            File file = new File(filePath);
            FileItem fileItem = new DiskFileItem("copyfile.txt", Files.probeContentType(file.toPath()),false,file.getName(),(int)file.length(),file.getParentFile());
            byte[] buffer = new byte[4096];
            int n;
            try (InputStream inputStream = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()){
                while ( (n = inputStream.read(buffer,0,4096)) != -1){
                    os.write(buffer,0,n);
                }
                //也可以用IOUtils.copy(inputStream,os);
                MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
                System.out.println(multipartFile.getName());
                return multipartFile;
            }catch (IOException e){
                e.printStackTrace();
            }
            return null;
        }
    

    (3):使用FileUtils.copyInputStreamToFile()
    也是会生成文件,到最后也是要删除文件

    public static void main(String[] args) throws Exception {
            String path = "F:\\demo\\";
            File file = new File(path,"demo.txt");
            // 得到MultipartFile文件
            MultipartFile multipartFile = getFile();
            // 把流输出到文件
            FileUtils.copyInputStreamToFile(multipartFile.getInputStream(),file);
            // 读取文件第一行
            BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
            System.out.println(bufferedReader.readLine());
            // 输出绝对路径
            System.out.println(file.getAbsolutePath());
            bufferedReader.close();
            // 操作完上的文件 需要删除在根目录下生成的文件
            if (file.delete()){
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败");
    
            }
        }
        /**
         *
         * @Description 返回MultipartFile文件
         * @return org.springframework.web.multipart.MultipartFile
         * @date 2019/1/5 11:08
         * @auther dell
         */
        public static MultipartFile getFile() throws IOException {
            String filePath = "F:\\test.txt";
            File file = new File(filePath);
            FileItem fileItem = new DiskFileItem("copyfile.txt", Files.probeContentType(file.toPath()),false,file.getName(),(int)file.length(),file.getParentFile());
            byte[] buffer = new byte[4096];
            int n;
            try (InputStream inputStream = new FileInputStream(file); OutputStream os = fileItem.getOutputStream()){
                while ( (n = inputStream.read(buffer,0,4096)) != -1){
                    os.write(buffer,0,n);
                }
                //也可以用IOUtils.copy(inputStream,os);
                MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
                System.out.println(multipartFile.getName());
                return multipartFile;
            }catch (IOException e){
                e.printStackTrace();
            }
            return null;
        }
    

    4:强转类型

    CommonsMultipartFile commonsmultipartfile = (CommonsMultipartFile) multipartFile;
    DiskFileItem diskFileItem = (DiskFileItem) commonsmultipartfile.getFileItem();
    File file = diskFileItem.getStoreLocation();
    

    这种强转你获得的file只是一个空壳
    在这里插入图片描述
    你能获取的也只有这个F:\upload_edfce39f_2894_4b66_b865_d5fb8636bdf3_00000000.tmp 网上有说会在根目录生成临时文件的,从tmp也可以看出来是个临时文件,但是我试了好几次啥都没找到。。。。直接获取这个file读取内容也是会报文件找不到的 这是必然的 当然也有在spring配置文件配置CommonsMultipartResolver的 这就感觉很麻烦了。。。。
    但是我们可以看一下diskFileItem 看下图 是不是很熟悉了,从diskFileItem可以获取文件流,其实你看了源码你就知道获取文件流都是从这里获取的。剩下的就好办了 我就不赘述了/。在这里插入图片描述

    在使用临时文件的时候可以使用缓冲区创建临时文件

    //  createTempFile(String prefix, String suffix) 
    //  prefix 文件名 suffix 文件格式
    // 默认是tmp格式  C:\Users\dell\AppData\Local\Temp\tmp8784723057512789016.tmp 
    File file =File.createTempFile("tmp", null);
    // txt格式  C:\Users\dell\AppData\Local\Temp\tmp2888293586594052933.txt
    File file =File.createTempFile("tmp", ".txt");
    

    HttpClient构建上传文件参数并实现中转文件

    这里不自己给例子了,参考了其他博客的代码

    // 获取文件名称
    String fileName = file.getOriginalFilename();
    HttpPost httpPost = new HttpPost(url);
    // 创建文件上传实体
    MultipartEntityBuilder builder = MultipartEntityBuilder.create();
    builder.addBinaryBody("file", file.getInputStream(), ContentType.MULTIPART_FORM_DATA, fileName);
    builder.addTextBody("filename", fileName);
    HttpEntity entity = builder.build();
    httpPost.setEntity(entity);
    HttpResponse response = httpClient.execute(httpPost);// 执行提交
    

    执行提交之后你会发现你上传的文件名会出现中文乱码
    这里参考
    HttpClient上传文件中文名乱码
    该博客详细说明了为什么会乱码以及怎么解决
    我使用的解决办法是:

     //设置模式为RFC6532
     builder.setMode(HttpMultipartMode.RFC6532);
    
    展开全文
  • JAVA基础知识之File

    万次阅读 多人点赞 2018-07-13 10:46:30
    一、File类定义 1. File类主要是JAVA为文件这块的操作(如删除、新增等)而设计的相关类 2. File类的包名是java.io,其实现了Serializable, Comparable两大接口以便于其对象可序列化和比较public class File ...
  • cannot open shared object file: No such file or directory 解决办法: 1、此时ldd xxx查看依赖缺少哪些库 libmysqlcppconn.so.7 => not found libboost_system.so.1.64.0 => not found 2、设置变量LD_...
  • ValueError: File is not a recognized excel file ValueError:文件不是可识别的excel文件 这个错误的原因是xlsx文件本身的问题,可能是wps或是Excel保存格式出错无法被识别。 之后重新制作xlsx文件并完整保存 ...
  • inputStream转File

    千次阅读 2021-12-08 08:40:40
    inputStream转File,获取到File,注意下方的文件名后缀请更改为自己文件的后缀 publicstaticFileasFile(InputStreaminputStream)throwsIOException{ Filetmp=File.createTempFile("lzq",".tmp",newFile("C:\\")); ...
  • In file(file, "rt") : 无法打开文件'fileurl': No such file or directory > ``` **请教各位大神,为啥无法打开文件,万分感谢** 已经尝试过setwd,文件夹没有问题,是目录的文件夹 ``` > getwd() [1] "D:/coursera...
  • java中File类方法详解

    万次阅读 多人点赞 2019-04-24 17:10:48
    File类简介   在 Java 中,File 类是 java.io 包中唯一代表磁盘文件本身的对象。File 类定义了一些与平台无关的方法来操作文件,File类主要用来获取或处理与磁盘文件相关的信息,像文件名、 文件路径、访问权限和...
  • File f = new File怎么用?

    千次阅读 2021-04-27 17:43:26
    例:File f = new File(“D:\Folder”); 这名话并不真正会创建D:\Folder 这个文件。 而是创建了一个代表 D:\Folder 这个文件的一个File对象。 你需要判断,如果文件不存在,再创建,如: File f = new File(“D:\Folder...
  • UTL_FILE包详解

    千次阅读 2018-08-15 16:26:04
    1 Utl_File包简介 Oracle的UTL_FILE包用来实现对磁盘文件的I/O操作。 (1)Oracle10g之前的版本需要指定utl_file包可以操作的目录。 方法: 1、alter system set utl_file_dir=’e:/utl’ scope=spfile; 2、在...
  • File和MultipartFile互转

    千次阅读 2022-04-12 17:14:41
    * MultipartFile 转 File * * @param multipartFile * @throws Exception */ public static File MultipartFileToFile(MultipartFile multipartFile) { File file = null; //判断是否为null if ...
  • JavaScript 文件对象File

    千次阅读 2021-01-21 15:51:45
    在浏览器中操作文件,多数情况下用到的是 File 对象,从<input type='file' />元素获取,进而继续操作(例如将选择的图片展示在页面上,用ajax将文件上传至服务器等)。这里介绍在浏览器中操作文件的相关API. ...
  • 其实对于如何使用FileProvider,其实在FileProvider的API页面也有详细的步骤,有兴趣的可以看下。 https://developer.android.com/reference/android/support/v4/content/FileProvider.html FileProvider...
  • java中File转为MultipartFile的四种方式

    万次阅读 2022-02-25 15:08:33
    java中File转为MultipartFile的四种方式
  • Error in file(file, "rt") : cannot open the connection In addition: Warning message: In file(file, "rt") :cannot open file 'data.csv': No such file or directory 目录 Error in file(file, "rt") : ...
  • MultipartFile 转File的几种方式

    万次阅读 2021-09-09 14:57:37
    一、MultipartFile转File 二、代码示例 1.第一种方式 2.第二种方式 3.第三种方式 总结 前言 最近写项目有个需求是上传Excel文件并读取Excel文件中的内容,项目采用的是前后端分离的模式,前端采用FormData...
  • file.exists(),file.isFile()和file.isDirectory()的区别

    万次阅读 多人点赞 2020-05-19 16:29:33
    file.exists(),file.isFile()和file.isDirectory()的区别 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。...
  • java.io.File 类是文件和目录路径名的抽象表示 主要用于文件和目录的创建 查找和删除等操作 Java将电脑中的文件和文件夹目录封装为了一个File类 可以使用File类对文件和文件夹进行操作 可以使用File的方法来: 创建...
  • File类的概述和构造方法 A:File类的概述 查看API 文件和目录路径名的抽象表示形式 这个File类可以用来表示文件,也可以用来表示目录 B:构造方法 File(String pathname):根据一个路径得到File对象 File(String parent...
  • HTML5之file控件

    万次阅读 2019-06-03 15:25:36
    file控件和select都是属于样式有点不受控制. file控件以及fileList对象。 file控件: <input type="file" id="inName" mutiple="multiple"> document.getElementById("idName").file;//返回的是fileList...
  • C#的读写及文件操作(File,FileMode)

    万次阅读 2018-08-13 19:16:37
     可以使用 File.ReadAllText(FilePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法。  它们都一次将文本内容全部读完,并返回一个包含全部文本内容的字符串  string str = File.ReadAllText(@...
  • file和inputstream相互转换

    千次阅读 2022-01-21 15:29:09
    File --> InputStream InputStream in = new FileInputStream(file); InputStream --> File public void inputstreamtofile(InputStream ins,File file){ OutputStream os = new FileOutputStream(file); ...
  • File类遍历文件夹

    千次阅读 2022-02-13 15:04:05
    public class Demo_01 { /* 用File类便利文件夹 */ ... File file = new File("E:\\aaaa"); printFile(file); } public static void printFile(File file){ File[] files = file.listFiles()
  • MultipartFile转File

    万次阅读 多人点赞 2019-06-19 18:45:05
    前端传过来MultipartFile,后端转为file后删除本地缓存文件 后台接收的需要转换为一个File类型的 接受前端文件: MultipartFile file111 = ((MultipartHttpServletRequest) httpServletRequest).getFile("前端传...
  • 将MultipartFile转换为File方法。

    千次阅读 2022-03-31 16:27:59
    将MultipartFile转换为File方法如下: /** * 将MultipartFile转换为File * @param multiFile * @return */ public static File MultipartFileToFile(MultipartFile multiFile) { // 获取文件名 String ...
  • file转base64

    万次阅读 2021-10-12 10:32:08
    const getImgToBase64 = (file: File) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = function () { console.log(reader.result); //获取到base64格式图片 const ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,545,707
精华内容 3,018,282
关键字:

file

友情链接: Draw.rar