一. 起因
问题来源:最近在实现文件上传时,windows与linux系统出现的问题,两个系统中操作文件使用"\","/"导致IOException
二. 测试正反斜杆
2.1 \
@Controller
@RequestMapping("/test")
public class Test {
@RequestMapping("/file")
@ResponseBody
public Object readFile(HttpServletResponse response) throws IOException {
BufferedImage banner = ImageIO.read(new File("F:\\Img\\ghost_K\\bj3.jpeg"));
ImageIO.write(banner, "jpeg", response.getOutputStream());
return "获取成功";
}
}
运行结果
2.2 /
@Controller
@RequestMapping("/test")
public class Test {
@RequestMapping("/file2")
@ResponseBody
public Object readFile2(HttpServletResponse response) throws IOException {
BufferedImage banner = ImageIO.read(new File("F:/Img/ghost_K/bj3.jpeg"));
ImageIO.write(banner, "jpeg", response.getOutputStream());
return "获取成功";
}
}
运行结果
2.3 混用
@Controller
@RequestMapping("/test")
public class Test {
@RequestMapping("/file1")
@ResponseBody
public Object readFile1(HttpServletResponse response) throws IOException {
BufferedImage banner = ImageIO.read(new File("F:\\Img/ghost_K\\bj3.jpeg"));
ImageIO.write(banner, "jpeg", response.getOutputStream());
return "获取成功";
}
}
运行结果
2.4 小结
在java中操作文件时,无论正反斜杆都是可以的,在用到\\(双反斜杠,前面一个反斜杠代表转义符),而如果直接转义反斜杠则会报错
三. 使用建议
经过查询各种资料后,得出以下结论
- java中的路径一般用"/"
- windows中的路径一般用"\",而"\"需要转义,因此需要写成"\\"
- linux、unix中的路径一般用"/"
由于Windows的路径中,使用"/"也可以读取到文件,个人感觉,"/"的跨平台性更好,使用起来更加方便