Java中的文件与磁盘操作技术详细解析
2008-02-23 08:13:51来源:互联网 阅读 ()
1 如何获得某一个目录下的文件列表?
File MyDir = new File("C:/Windows/.");
String[] FileNames = MyDir.list();
2 如何实现一个打开文件或者是存储文件对话框?
AWT: FileDialog类 FilenameFilter类
Swing: JFileChooser类 FileFilter类
其中,基于Swing的解决方案功能更加强大,界面也更加美观。
3 利用FileReader/FileOutputStream拷贝中文文件出错?
利用如下代码片断拷贝中文文件不会出错:
int c;
while ((c = MyFileReader.read()) != -1)
MyFileWriter.write(c);
利用如下代码片断拷贝中文文件会导致文件内容错误:
int c;
while ((c = MyFileReader.read()) != -1)
MyFileOutputStream.write(c);
造成这个问题的原因是:FileReader.read()返回一个int,其取值范围是
0 到65535,通常来说是两个字节的;FileWriter.write(int c)向文件写
入一个int,通常来说也是两个字节的,如果某个字符的高位字节为空,那
么其高位字节将被舍弃;FileOutputStream.write(int b)虽然接受一个
int作为参数,实际上只向文件写入一个字节,如果传递过来的参数是一个
双字节的汉字,其高位字节将被舍弃,造成文件内容错误。
建议:永远只使用InputStream/OutputStream进行IO操作。
利用如下代码片断拷贝中文文件不会出错:
int c;
while ((c = MyFileInputStream.read()) != -1)
MyFileOutputStream.write(c);
4 如何显示和存储拉丁语言中的特殊字符
使用统一码Unicode可以显示和存储拉丁语言中的特殊字符。具体应用范例
如下:
MyJTextArea.append("\u00E1");
MyJTextArea.append("\u00E2");
MyJTextArea.append("\u00E3");
MyJTextArea.append("\u00E4");
MyJTextArea.append("\u00E5");
MyFileOutputStream.write(MyJTextArea.getText().getBytes("UTF-8"));
MyFileOutputStream.close();
同样,在读取文件的时候也需要将读到的内容转换成统一码。
byte[] b = new byte[MyFile.length()];
FileInputStream in = new FileInputStream(MyFile);
in.read(b);
MyJTextArea.append(new String(b, "UTF-8"));
5 如何利用文件进行数据存取
对于一般的科学计算应用程序,DataInputStream和DataOutputStream类通
常是最好的选择。这两个类提供了存取各种数据的方法。下面的范例演示了
构造DataInputStream和DataOutputStream的方法:
MyDataInputStream = new DataInputStream(
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash