首先,我知道这个网站有相同的问题,但我无法在现有的txt文件中添加文字。也许我错过了什么,但在哪里?无论如何,这是我的代码。
我有translate.txt文件。它是/ raw folder.and当我单击按钮时,必须将editTexts(w1,w2)
中写的单词添加到现有的translate.txt文件中。但它不起作用..
public class Add extends Activity {
EditText w1,w2;
Button save;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.add);
w1=(EditText)findViewById(R.id.idText1);
w2=(EditText)findViewById(R.id.idText2);
save=(Button) findViewById(R.id.idSave);
save.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String word1=w1.getText().toString();
String word2=w2.getText().toString();
writefile(word1,word2);
}
});
}
public void writefile(String word1,String word2)
{
try
{
String finalstring=new String(word1 + " " + word2);
FileOutputStream fOut = openFileOutput("translate.txt",MODE_APPEND);
OutputStreamWriter osw = new OutputStreamWriter(fOut);
osw.write(finalstring);
osw.flush();
osw.close();
Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show();
} catch(Exception e)
{
Toast.makeText(this, "ERROR!!!", Toast.LENGTH_SHORT).show();
}
}
}
答案 0 :(得分:1)
A)在Android中编写APPEND文件的代码
public void writefile(String word1,String word2)
try {
String path = sdCard.getAbsolutePath() + "/";
File logFile = new File(path + "translate.txt");
if (!logFile.exists()) {
logFile.createNewFile();
}
// BufferedWriter for performance, true to set append to file
FileWriter fw = new FileWriter(logFile, true);
BufferedWriter buf = new BufferedWriter(fw);
buf.append(word1 + " " + word2);
buf.newLine();
buf.flush();
}
buf.close();
} catch (IOException e) {
e.printStackTrace();
}
B)规则/许可 的的AndroidManifest.xml 强>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
编辑对于用户
您无法将文件写入原始文件夹。它是只读的。准确地说,您无法动态修改“Res”文件夹中包含的任何内容。
答案 1 :(得分:1)
以防您不想将数据存储在SD卡中并想要使用以前的方法 您创建文件和向其添加数据的方式实际上并不是在res / raw文件夹中编辑文件(因为它无法编辑)
但您编写的数据实际上存储在与此Context的应用程序包关联的私有文件中以供阅读。
因此它就在那里,文件可以按如下方式阅读:
private void readFile() {
// TODO Auto-generated method stub
try {
FileInputStream fin = openFileInput("translate.txt");
InputStreamReader isr = new InputStreamReader(fin);
BufferedReader br = new BufferedReader(isr);
String str;
StringBuilder str2 = new StringBuilder();
while ((str = br.readLine()) != null) {
str2 = str2.append(str);
}
isr.close();
editText.setText(str2.toString());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
你可以按照这种方法,因为你不想将文件存储在SD卡中,因为任何人都可以阅读sd crad中的文件。