java中的File.separator

前些天遇到一个问题,困扰了好久,现在终于解决了。

问题:上传的图片不能正确显示。

我的开发环境是在Windows下,工程在Windows下能正常部署,上传的图片也可以正常的显

示。但是把工程部署在服务器上的时候,图片总是不能显示,很是让人郁闷,后来在网上找了

各种资料,问题终于解决了。

文件路径的分隔符在windows系统和linux系统中是不一样。

比如说要在temp目录下建立一个test.txt文件,在Windows下应该这么写:

File file1 = new File (“C:\tmp\test.txt”);

在Linux下则是这样的:

File file2 = new File (“/tmp/test.txt”);

而我刚开始就是按照File file1 = new File (“C:\tmp\test.txt”);这种方式写的,在

Windows下没有问题,但是将工程部署在服务器上时,就出问题了。服务器是linux系统,所

以这时文件路径就出错了。后来将分隔符用File.separator 代替,ok,问题解决了。下边介

绍下File.separator 。

如果要考虑跨平台,则最好是这么写:
File myFile = new File(“C:” + File.separator + “tmp” + File.separator, “test.txt”);

File类有几个类似separator的静态字段,都是与系统相关的,在编程时应尽量使用。

separatorChar

public static final char separatorChar

与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 ‘/’;在 Microsoft Windows 系统上,它为 ‘\’。

separator

public static final String separator

与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 separatorChar。

pathSeparatorChar

public static final char pathSeparatorChar

与系统有关的路径分隔符。此字段被初始为包含系统属性 path.separator 值的第一个字符。此字符用于分隔以路径列表 形式给定的文件序列中的文件名。在 UNIX 系统上,此字段为 ‘:’;在 Microsoft Windows 系统上,它为 ‘;’。

pathSeparator

public static final String pathSeparator

与系统有关的路径分隔符,为了方便,它被表示为一个字符串。此字符串只包含一个字符,即 pathSeparatorChar。

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
java的IO操作总结(四) 前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; @SuppressWarnings("serial") //一个类要想实现序列化则必须实现Serializable接口 class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String toString() { return "Name:" + this.name + ", Age:" + this.age; } } public class Demo { public static void main(String[] args) { String path = File.separator + "home" + File.separator + "siu" + File.separator + "work" + File.separator + "demo.txt"; Person p1 = new Person("zhangsan",12); Person p2 = new Person("lisi",14); //此处创建文件写入流的引用是要给ObjectOutputStream的构造函数玩儿 FileOutputStream fos = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream(path); oos = new ObjectOutputStream(fos); //这里可以写入对象,也可以写入其他类型数据 oos.writeObject(p1); oos.writeObject(p2); } catch (IOException e) { e.printStackTrace(); } finally { try { oos.close(); } catch (IOException e) { e.printStackTrace(); } } } } 解压密码 www.jiangyea.com
1. IO:(Input Output)是输入输出流 从内存到硬盘就是输出流Output 从硬盘到内存就是输入流Input IO操作的最基础的是文件File 2. File 1. 概念:就是java的一个文件或者文件夹。如果没有后缀就表示是一个文件夹,如果有后缀就表示文件。 2. 作用:为了IO流提供操作的基础 3. 使用: 1. 常量: 1.1. static String pathSeparator 与系统相关的路径分隔符字符,为方便起见,表示为字符串。 1.2. static String separator 2. 构造方法: 2.1 File(String pathname) 根据文件名创建一个File对象, pathname:(如果有后缀就是一个文件对象,如果没有后缀会默认为是一个文件夹对象) 1. 相对路径:相对于当前Java类的项目 2. 绝对路径:从根目录或者盘符开始 /都表示从根目录或者盘符开始 2.2 File(String parent, String child) 在父级目录下创建一个文件或文件夹 parent:父级目录 child:当前目录或者当前文件 2.3 File(File parent, String child) 在父级目录下创建一个文件或文件夹 3. 常用方法: 常用方法:获取子文件夹或者子文件方法 * 1.String[] list()获取当前文件夹下所有的子文件夹或者子文件的名 //文件没有下一级 2.File[] listFiles() 获取当前文件夹下所有的子文件夹或者子文件对象 ===================================有过滤功能=================================== * 3.String[] list(FilenameFilter filter) 获取根据文件名过滤后的文件名 FilenameFilter:文件名过滤器接口 4.File[] listFiles(FilenameFilter filter) 获取根据文件名过滤后的文件对象 FilenameFilter:文件名过滤器接口 -----------------------------上面只能根据文件名或者文件夹名过滤,下面的可以通过文件的其他属性过滤,例如:文件大小等----------------------------- 5.File[] listFiles(FileFilter filter) 获取根据文件过滤后的文件对象 FileFilter:文件过滤器接口 2. 递归: 1. 概念:是一种思想,也是一种算法。在方法内部调用自己的方法。(自己干自己) 2. 作用:就是简化有相似的业务逻辑(循环)代码。 3. 使用规律特点: 1. 通过数值带入的方式,查找逻辑规律: 将所有的已知条件写出来 就是有相似运算逻辑的代码 2. 通过条件判断(条件/循环)的方式,在满足条件的时候根据规律调用自己的方法。 如果不满足就不会自己的方法,这就是出口 4. 使用场景: 1. 树状结构数据、菜单结构、上下级关系等的数据查询 2. 有相似逻辑运算的结构 3. 适用于层级结构少,数据量小的场景。(最重要)如果层级多,且数据量大用循环。 5. 解决了哪些问题: (1)数据的定义是按递归定义的。(Fibonacci函数:斐波拉契数列) (2)问题解法按递归算法实现。(汉诺塔问题) 这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。 (3)数据的结构形式是按递归定义的。 如二叉树、广义表等,由于结构本身固有的递归特性,则它们的操作可递归地描述。 6. 注意事项: 1. 递归必须 有出口 2. 能用循环用循环,不要用递归,因为效率极其低下。 为什么效率低下? 方法的调用都是创建新栈帧,入栈,而栈层级是有限制的 StackOverflowError : 栈内存溢出错误。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值