Java中的文件与磁盘怎样进行操作

 我来答
r証15616966380
2017-11-14 · 超过21用户采纳过TA的回答
知道答主
回答量:75
采纳率:25%
帮助的人:12.5万
展开全部
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的方法:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式