file类 文件存入指定目录

 1 void save(String deviceId) {
 2         //添加一个设备,一定要发起网络请求,告诉服务器,让服务器返回一个deviceId
 3         
 4         DeviceInfo mDevice = new DeviceInfo(deviceId);        
 5         mDevice.setDeviceName(devname);
 6         mDevice.setServerAddress(address);
 7         mDevice.setPort(port);
 8         mDevice.setUserName(username);
 9         mDevice.setPassword(passwd);        
10         mDevice.setChannelNum(chanum);
11         
12         ObjectOutputStream oos = null;
13         File directory = null;
14         File file = null;
15         String fileName = null;
16         
17         try {
18             fileName ="/data/data/wyq.use.supermeye/device/"+"device"+deviceId;
19             directory = new File(fileName);
20             directory.mkdirs();
21             if (!directory.exists()) {
22                 return;
23             }
24             file = new File(fileName + File.separator + "d"+deviceId+".ser");
25             file.createNewFile();
26             if (!file.isFile()) {
27                 return;
28             }
29             oos = new ObjectOutputStream(new FileOutputStream(file));
30             oos.writeObject(mDevice);
31             oos.flush();
32             } catch (Exception e) {
33 
34             } finally {
35                 try {
36                     oos.close();
37                 } catch (IOException e) {
38                     Log.d("IOException","IOException");
39                     e.printStackTrace();
40                 }
41             }
42             
43         DeviceCache.saveFile(mDevice);        
44     }

实际存的效果如下:

 

经常出现的问题:FileNotFoundException。

看File类的构造方法:

1、File(String path)  file的完整路径,把文件名也带进去

     File f = new File("/data/data/wyq.use.supermeye/"+filename);

2、File(URI uri)

3、File(String path,String name)  file要存放的路径,文件名

    File f = new File("/data/data/wyq.use.supermeye",filename);

4、File(File dir,String name)  file要存放的路径,文件名

    String filename = "d"+deviceId+".ser";

    File dir = new File("/data/data/wyq.use.supermeye");

    File f = new File(dir,filename);

 

又加了一层文件夹

  File dir = new File("/data/data/wyq.use.supermeye/device");
  dir.mkdirs();
  File f = new File(dir,filename);

上面的加不加dir.mkdirs()效果是一样的,但是这个必须加,不然会报FileNotFoundException。

因为上面的目录本身就已经存在,而下面的目录是我们自己创建的。

 

mkdir()和mkdirs()有什么区别?

区别:mkdir()只能创建一层目录,如 File file = new File("c:/aa");即只能在已经存在的目录中创建文件夹

         mkdirs()可以创建多层目录,如 File file = new File("c:/aa/bb"); 即可以在不存在的目录中创建文件夹

 

 

   

   

posted @ 2013-05-10 15:39  little_star  阅读(772)  评论(0编辑  收藏  举报