Q:如何从键盘输入字符串,再赋给字符串对象 A: public String getstring() throws IOException{
InputStreamReader isr =new InputStreamReader(System.in); BufferedReader
br = new BufferedReader(isr); return br.readLine(); }
Q:如何获得某一个目录下的文件列表 A: File MyDir = new File("C:/Windows/."); String[] FileNames = MyDir.list();
Q:如何实现一个打开文件或者是存储文件对话框 A: AWT: FileDialog类 + FilenameFilter类 Swing: JFileChooser类 + FileFilter类其中,基于Swing的解决方案功能更加强大,界面也更加美观。
Q:利用FileReader/FileOutputStream拷贝中文文件出错? A: 利用如下代码片断拷贝中文文件不会出错: 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);
Q:如何显示和存储拉丁语言中的特殊字符 A: 使用统一码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"));
Q:如何利用文件进行数据存取 A:
对于一般的科学计算应用程序,DataInputStream和DataOutputStream类通常是最好的选择。这两个类提供了存取各种数据的方
法。下面的范例演示了构造DataInputStream和DataOutputStream的方法: MyDataInputStream =
new DataInputStream( new FileInputStream(MyInputFile));
MyDataOutputStream = new DataOutputStream( new
FileOutputStream(MyOutputFile));
利用ObjectInputStream和ObjectOutputStream同样可以进行数据存取,需要注意的是这样做增加了硬盘的开销,因为进行对
象序列化过程添加了一些额外的信息。在利用ObjectInputStream和ObjectOutputStream进行通讯的时候,虽然数据发收过程
得到了大大简化,但是对带宽的要求也大大的提高了。
论坛上别人整理的一些编程技巧(觉得实用)
最新推荐文章于 2025-02-09 18:25:08 发布