2013-07-04 45 views
0

您好,我想創建一個文件並在其中寫入一些數據,之後我想爲該文件分配只讀權限,以便其他人不能修改它。如何將只讀權限分配給文件

我已經寫了部分 但我沒有任何想法如何設置只讀權限並刪除其他所有權限 我試過setReadOnly();但它不起作用。

請讓我知道是否有任何解決方案。 謝謝你在先進的...

我曾嘗試以下,但它不工作

String currentDateTimeString; 
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");//date format 
      currentDateTimeString = sdf.format(new Date());//current date 
      File recordFolder = new File(Environment.getExternalStorageDirectory(), "WBS/Record"); 
      recordFolder.mkdirs(); // <----make a folder 
      File file = new File(recordFolder, currentDateTimeString+".xml");//create the images 

      File dbtest =new File("/data/data/com/ami/wbs/databases/WBS"); 

      if(!dbtest.exists()) 
      { 
       // what to do if it does exist 
      // Toast.makeText(getApplicationContext(), "DB is present", Toast.LENGTH_LONG).show(); 
      } 
      else 
      { 
       // what to do if it doesn't exist 
       //Toast.makeText(getApplicationContext(), "DB is not present", Toast.LENGTH_LONG).show(); 
      } 

       database = new DB_Adapter(getApplicationContext(), "WBS", null, 1); 
       FileWriter filewrite = null; 
       //BufferedWriter filewrite = null; 
       try { 

        //filewrite = new BufferedWriter(new OutputStreamWriter(openFileOutput(currentDateTimeString+".xml", MODE_PRIVATE))); 
        filewrite = new FileWriter(file,true); 
        filewrite.write("<?xml version='1.0' ?>"); 
        filewrite.write("<Resultset>"); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

       SQLiteDatabase db=database.getReadableDatabase(); 
       Cursor c = db.rawQuery("Select CONSUMER_ID,METER_NO,PREV_READING,CURR_READING from CONSUMER;", null); 

       if(c.moveToNext()) 
       { 
       // Toast.makeText(getApplicationContext(),"Table found", Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        Toast.makeText(getApplicationContext(),"Table not found", Toast.LENGTH_SHORT).show(); 
       } 

       c.moveToFirst(); 
       do 
       { 

        String consumerid=c.getString(c.getColumnIndex("CONSUMER_ID")); 
        String meterno=c.getString(c.getColumnIndex("METER_NO")); 
        String currentreading=c.getString(c.getColumnIndex("CURR_READING")); 

        try { 
         filewrite.write("<consumer>" 
             +"<consumerid>"+consumerid+"</consumerid>" 
             +"<meter>"+meterno+"</meter>" 
             +"<curread>"+currentreading+"</curread></consumer>"); 
         filewrite.write("</Resultset>"); 
          filewrite.close(); 

        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 

       }while(c.moveToNext()); 
    file.setReadOnly(); 
       Toast.makeText(getApplicationContext(), "Export file successfully", Toast.LENGTH_SHORT).show(); 
+1

你是什麼意思'不工作'?你是否收到任何錯誤/例外? –

回答

3

如果該文件是內部存儲(例如,getFilesDir()),它只是默認讀取。

如果文件位於外部存儲器上(例如,Environment.getExternalStorageDirectory()),AFAIK不能更改權限位以使其只讀。

+0

是的,它在SD卡上的WBS /記錄命名文件夾,但是當我在ddms中檢查權限時,它顯示它具有所有權限讀取全部寫入 –

+0

@YograjShinde:正如我寫的,AFAIK不能更改權限位以使其只讀。如果您希望它是隻讀的,請勿將其放在外部存儲器上。 – CommonsWare

+0

好的非常感謝你 –