Java那些事之文件操作

今天简单介绍一下java中文件的读写操作。

读写文件是开发过程中最常见的技术了,虽然简单,但其中还是有很多细节需要注意的。比如写文件前要验证文件夹或文件是否存在,读写文件时编码格式的指定,以及读文件时以行为单位读取还是以字节为单位等等。

废话不多说,下面附上代码和注释,希望对大家有所帮助.

View Code
 1 public ArrayList<String> ReadFileData(String fileName,ArrayList<String> strList) {
 2         // TODO Auto-generated method stub
 3         CheckMethods.PrintDebugMessage("-------开始处理文件:"+fileName+"-------");
 4         File file = new File(fileName);
 5         BufferedReader reader = null;
 6         try {
 7             CheckMethods.PrintDebugMessage("以行为单位读取文件内容,一次读一整行:");
 8             reader = new BufferedReader(new FileReader(file));
 9             String tempString = null;
10             int line = 0;
11             
12             // 一次读入一行,直到读入null为文件结束
13             while ((tempString = reader.readLine()) != null) {
14                 // 显示行号
15                 line++;
16                 CheckMethods.PrintDebugMessage("line " + line + "" + tempString); 
17                 if(!tempString.equalsIgnoreCase(""))
18                     strList.add(StringHelper.TrimString(tempString));
19             }
20             reader.close();
21             return strList;
22         } 
23         catch (IOException e)
24         {
25             e.printStackTrace();
26             CheckMethods.PrintInfoMessage("读取配置文件:"+fileName+"出现错误");
27             
28         } 
29         return null;
30     }

 

View Code
 1 public String readDataFromFile(String fileName,String code)
 2     {
 3         CheckMethods.PrintDebugMessage("-------开始处理磁盘网页文件:"+fileName+"-------");
 4         StringBuilder sb = new StringBuilder();
 5         File file = new File(fileName);
 6         if(!file.exists())
 7         {
 8             
 9             return "";
10         }
11         Reader reader = null;
12         try {
13             CheckMethods.PrintDebugMessage("以字符为单位读取文件内容,一次读一个字节:");
14             // 一次读一个字符
15             reader = new InputStreamReader(new FileInputStream(file),code);
16             int tempchar;
17             while ((tempchar = reader.read()) != -1) {
18                 // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
19                 // 但如果这两个字符分开显示时,会换两次行。
20                 // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
21                 if (((char) tempchar) != '\r') {
22                    sb.append((char) tempchar);
23                 }
24             }
25             reader.close();
26             
27             return sb.toString();           
28         } catch (Exception e) {
29             e.printStackTrace();
30             
31             CheckMethods.PrintInfoMessage("读取文件:"+fileName+"出现错误");
32         }
33         return "";
34     }

 

View Code
 1 public void writeDataToFile(String fileDic,String fileName,String content,String charSet) {
 2         // TODO Auto-generated method stub
 3         if(content.equalsIgnoreCase(""))
 4             return;
 5         File file = null;
 6         try
 7         {
 8             //确保目录和文件存在,不存在则创建
 9             File fileDiction = new File(fileDic);
10             if(!fileDiction.exists())
11                 fileDiction.mkdirs();
12             file = new File(fileDic+fileName);
13             if(!file.exists())
14                 file.createNewFile();
15         }
16         catch(Exception e)
17         {
18             CheckMethods.PrintInfoMessage(e.getMessage());
19             CheckMethods.PrintInfoMessage("创建文件:"+fileDic+fileName+"出现错误");
20             
21         }
22         
23         OutputStreamWriter write = null;
24         try {
25             //需要注意指定编码格式
26             write = new OutputStreamWriter(new FileOutputStream(file),charSet);        
27             BufferedWriter writer = new BufferedWriter(write);        
28             writer.write(content);
29             writer.close();
30         }
31         catch (IOException e) {
32             // TODO Auto-generated catch block
33             e.printStackTrace();
34             CheckMethods.PrintInfoMessage("写入文件:"+fileDic+fileName+"出现错误");
35             
36         }
37     }

今天就到这里, 有什么不妥的地方,欢迎大家留言指正~

 

posted @ 2011-07-01 13:22  ~大器晚成~  阅读(386)  评论(0编辑  收藏  举报