1

我创建了写入和读取文件的应用程序。当我单击按钮时,我的文件被写入并在同一个按钮单击时读取文件。我想要当我的文件被写入时,该文件将其保存到 SQLite 中。我在网上冲浪很多但不能找不到正确的来源或想法如何做到这一点。并且该文件与输入字符串进行比较,例如“代码”。如果这个 input_String 与存储在 SQLite 数据库中的那个文件匹配,如果匹配用户不能继续进行进一步的过程。如果有人能够给我一些关于这个的建议,我希望其他人们也觉得这很有帮助。这是我的代码。感谢高级版。

活动类

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);

    }
4

2 回答 2

0

您采用的方法可能会有所改进,考虑仅将文件名存储在数据库中,您已经保存了文件,对吗?为什么将它们的内容再次存储在数据库中?

于 2013-11-14T13:35:49.063 回答
0

尝试将 txt 文件转换为 byte[],然后将其保存在 blob 数据 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);

将此 dataToSave byte[] 保存到您的 sqlite DB 的 blob 数据列。

希望这个链接对你有帮助

于 2013-11-14T12:25:34.630 回答