这一篇讲讲java路径,及字符流和字节流

来源:互联网 发布:sql语句删除查询结果 编辑:程序博客网 时间:2024/05/16 07:13
首先java路径,好多小伙伴最开始接触具体的项目都会纠结路径的问题,

(一)路径问题

首先java中File file = new File(Absolute_path);其中Absolute_path都是需要真实路径的,这样才可以获得一个File对象,否则报错。如“C:\Users\王小剑\Desktop\.....”这个就是真实路径,但是本着java的可移植性精神,我们在自己的项目中坚决反对使用真实路径。那么讲讲如何使用相对路径来代替真实路径。讲两种情况:

(1)web项目中

servlet通过相对路径获取文件真实路径如下

request.getSession().getServletContext().getRealPath(Relative_path);其中

Relative_path即相对路径,考虑web项目的目录结构

根目录Root---

css---

Css文件

Js---

Js文件

META-INF---

一些配置文件

WEB-INF---

classes---

Java.class

set.properties

Lib---

web.xml

此处我们若要获得set.properties文件的File对象,那么写法如下

File file = new File(request.getSession().getServletContext().getRealPath(“/WEB-INF/classes/set.properties”));

(2)javabean中如下链接此处不再赘述

http://blog.sina.com.cn/s/blog_4b5bc0110100g22w.html

补充一句:类名.class.getResource("/");获得的并不是标准的目录结构,而是获得了一个URL对象,要获得标准目录路径需要使用:

类名.class.getResource("/").toURL.getpath();

(二)字符问题(此处只讲读取文件中的字符,写入与之对应)

我们读取文件一般分为字节流和字符流

字节流用于读取8位字节的数据,而字符流用于读取16位字节的数据,简单的说就是字符流可以读取中文。

字节流基类为InoutStream、OutputStream。

字符流基类为Reader、Writer。

另外一个比较常用的东西是转换流,InputStreamReader类将字节流转换为字符流,

如下:

InputStreamReader in = new InputStreamReader(InoutStream);

这样子就将一个字节流转换为了字符流。

注意一件事情,就是虽然字符流可以读取中文,但是并不一定读出来的就是中文,为什么呢?

原因在于文件本身的编码格式,如果文件本身编码格式不是gbk,或者utf-8,那么就

算你使用字符流读取文件也读取不到中文。所以要读出中文需要两个条件,一,字符流、二

文件是gbk或者utf-8编码格式。

最后送大家一个大杀器,无视文件自身编码格式:

InputStreamReader in = new InputStreamReader(new FileInputStream(path), "UTF-8");

这一句代码虽然自由短短的一句,但是却需要上述所有的姿势,

包括

path路径,

字节流new FileInputStream(path) ,

转换流new InputStreamReader ,

字符流InputStreamReader in,

设置读取文件编码格式"UTF-8"
2 0
原创粉丝点击