2013-11-14 2 views
0

Я создал приложение для записи и чтения файла. когда я нажимаю кнопку, мой файл записывает и также читает файл на той же кнопке. Я хочу, чтобы когда и когда мой файл записывает, этот файл сохраняет его в SQLite. Я занимаюсь серфингом в сети, но могу " t найти правильный источник или идеи, как это сделать. И этот файл сравнивается со входом String как «код». Если этот input_String соответствует этому файлу, который хранится в базе данных SQLite, если пользователь совпадения не может продолжить дальнейший процесс. Я был бы признателен, если кто-нибудь из вас сможет дать мне несколько советов по этому вопросу, и я надеюсь, что другие люди тоже находят это полезным. Вот мой код. Спасибо в Advanced.Как сохранить .txt-файл в SQLite Android

Деятельность класса

public class Write extends Activity { 
    /** Called when the activity is first created. */ 
    EditText myText; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.abc); 
     myText = (EditText) findViewById(R.id.myText); 
     Button createButton = (Button) findViewById(R.id.btnCreate); 
     Button readButton = (Button) findViewById(R.id.btnRead); 
     createButton.setOnClickListener(new View.OnClickListener() 
     { 

      @Override 
      public void onClick(View v) 
      { 

       createFile(myText.getText().toString()); 
       myText.setText(""); 
       readFile(); 
      } 
     }); 


    } 

    private void createFile(String Text) 
    { 

     FileOutputStream fos = null; 
     try 
     { 
      fos = openFileOutput("mynote.txt", MODE_PRIVATE); 
      fos.write(Text.getBytes()); 
      Toast.makeText(getApplicationContext(), "File created succesfully", 
        Toast.LENGTH_SHORT).show(); 
     } 
     catch (FileNotFoundException e) 
     { 
      Log.e("CreateFile", e.getLocalizedMessage()); 
     } 
     catch (IOException e) 
     { 
      Log.e("CreateFile", e.getLocalizedMessage()); 
     } 

     finally 
     { 
      if (fos != null) 
      { 
       try 
       { 
        // drain the stream 
        fos.flush(); 
        fos.close(); 
       } 
       catch (IOException e) 
       { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 






And the DataBase_Adapter code 

//Table Name 
    public static final String TABLE_NAME_CODE="code_table"; 

    //Colum,n Names 
    public static final String KEY_CODE_ID="ID"; 
    public static final String KEY_CODE_NAME="USERNAME"; 


    //Table Create Statement 
    public static final String DATABASE_CREATE_CODE = "CREATE TABLE "+TABLE_NAME_CODE+" ("+KEY_CODE_ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+KEY_CODE_NAME+"TEXT)"; 

    //Insert Code in Database code_table 
    public void saveCode(String strKey_Code) 
    { 
     ContentValues newValues = new ContentValues(); 
     // Assign values for each row. 
     newValues.put(KEY_CODE_NAME , strKey_Code); 


     // Insert the row into your table 
     db.insert(TABLE_NAME_CODE, null, newValues); 

    } 
+0

Почему вы не просто сохраняете содержимое текстового файла как 'TEXT' в БД? – Budius

ответ

0

Попытка преобразовать текстовый файл в Byte [], а затем сохранить его в SQLite блоб данных.

InputStream is = new FileInputStream("txt file path"); 
ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
byte[] b = new byte[1024]; 
while ((int bytesRead = is.read(b)) != -1) { 
    bos.write(b, 0, bytesRead); 
} 
byte[] bytes = bos.toByteArray(); 
byte[] dataToSave = Base64.encode(bytes, Base64.DEFAULT); 

Сохраните эти данныеДобавить байт [] в столбцы данных blob столбца sqlite yout.

Hope this link helps you

0

подход вы взяли можно было бы улучшить немного, рекомендуется хранить в базе данных только имена файлов, у вас уже есть файлы сохраняются, правильно? зачем хранить их содержимое снова в базе данных?

Смежные вопросы