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"); 即可以在不存在的目录中创建文件夹