2012-12-08 2 views
9

텍스트 파일을 읽고 쓰는 데 필요한 앱이 있습니다. 나는 그것을 읽었지만 그것을 쓰지는 않았다. 생각은 화면의 저장 버튼을 클릭하면 textviews에 배열에 넣어 진 모든 정보를 저장하고 배열의 각 세그먼트를 텍스트 파일에 쓰는 것입니다.Android에서 .txt 파일에 어떻게 쓰나요?

public class AddOrModify extends Activity { 

    private Button Savebtn; 
    private Button Cancelbtn; 
    private EditText NameofRoute; 
    private EditText Address1; 
    private EditText City1; 
    private EditText State1; 
    private EditText Zip1; 
    private EditText Address2; 
    private EditText City2; 
    private EditText State2; 
    private EditText zip2; 




     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.add_or_modify); 

      Savebtn = (Button)findViewById(R.id.savebtn); 
      Savebtn.setOnClickListener(new btnlistenersave()); 

      Cancelbtn = (Button)findViewById(R.id.cancelbtn); 
      Cancelbtn.setOnClickListener(new btnlistenercancel()); 

     } 

     private class btnlistenersave implements View.OnClickListener{ 
      public void onClick(View v) { 

       NameofRoute = (EditText)findViewById(R.id.NameofRoute); 
       Address1 = (EditText)findViewById(R.id.editAddress1); 
       City1 = (EditText)findViewById(R.id.City1); 
       State1= (EditText)findViewById(R.id.State1); 
       Zip1 = (EditText)findViewById(R.id.Zip1); 
       Address2= (EditText)findViewById(R.id.Address2); 
       City2 = (EditText)findViewById(R.id.City2); 
       State2 = (EditText)findViewById(R.id.State2); 
       zip2 = (EditText)findViewById(R.id.Zip2); 

       //String[] mySettings ={NameofRouteinput,Address1input,City1input, State1input,Zip1input,Address2input,City2input,State2input,Zip2input,";"}; 


       // if(mySettings != null){ 
       try{ 

        String NameofRouteinput = NameofRoute.getText().toString(); 
        String Address1input = Address1.getText().toString(); 
        String City1input = City1.getText().toString(); 
        String State1input=State1.getText().toString(); 
        String Zip1input = Zip1.getText().toString(); 
        String Address2input =Address2.getText().toString(); 
        String City2input = City2.getText().toString(); 
        String State2input = State2.getText().toString(); 
        String Zip2input= zip2.getText().toString(); 
        OutputStreamWriter out = new OutputStreamWriter(openFileOutput("myaddress.txt",0)); 

        String[] mySettings ={NameofRouteinput,Address1input,City1input, State1input,Zip1input,Address2input,City2input,State2input,Zip2input,";"}; 


        for(int i =0; i < mySettings.length; i++) 
        out.write(mySettings[i]); 
        out.close(); 
       } 
       catch (java.io.IOException e){ 

       } 


       Intent i = new Intent(AddOrModify.this, Frontpage.class); 
       startActivity(i); 

      } 

     } 

     private class btnlistenercancel implements View.OnClickListener{ 

      public void onClick(View v) { 
       Intent i = new Intent(AddOrModify.this, Frontpage.class); 
       startActivity(i); 
      } 

     } 

} 

답변

4

당신은 다음과 같이 FileOutputStream 대신 OutputStreamWriter, 뭔가를 사용할 수 있습니다 :

File file = getFileStreamPath("test.txt"); 

if (!file.exists()) { 
    file.createNewFile(); 
} 

FileOutputStream writer = openFileOutput(file.getName(), Context.MODE_PRIVATE); 

for (String string: data){ 
    writer.write(string.getBytes()); 
    writer.flush(); 
} 

writer.close(); 

확인 안드로이드 docs이 쓰기 부분에 대한 내 코드입니다. 마리의 솔루션

+0

나는이 작업을 수행 할 수 있습니다 그래도 전체 배열? 귀하의 예를 들어, 하나의 문자열을 쓰고있다, 나는 많은 가치에 대해 그렇게 할 필요가, 아니면 내가 개별적으로 할거야? –

+0

네, 역시 작동해야합니다 ... 나는 당신을 위해 대답을 업데이 트했습니다. 내가 도왔 으면 좋겠어. – mari

+0

"데이터"영역에 무엇이 있어야합니까? 문자열, 문자열 배열 및 기타 여러 가지를 넣으려고했습니다. 그것은 나에게 오류를 주거나 다른 모든 행을 IOException으로 만듭니다. –

12

난 후

 java.lang.IllegalArgumentException: contains a path separator 

을 얻고 있었다 나는 다음과 같은 시도하고 당신이 루프는 여러 줄을 쓸 수있는 날

File root = new File(DIRECTORY_PATH); 
    File gpxfile = new File(root, "samples.txt"); 
    FileWriter writer = new FileWriter(gpxfile); 
    writer.append("First string is here to be written."); 
    writer.flush(); 
    writer.close(); 

근무

+1

DIRECTORY_PATH는 (는) 무엇입니까? – tgkprog

+2

@tgkprog 기본 디렉토리'Environment.getExternalStorageDirectory(). toString()'을 사용하거나 자신 만의 디렉토리를 만든 경우'Environment.getExternalStorageDirectory(). toString() + "/ Your Directory/"' –

+0

Ahh 이해 : 나는 File path = new File (Environment.getExternalStorageDirectory(),"Your Directory/subpath/a ")를 선호한다. 환경에 대해 가르쳐 주셔서 감사합니다. - 안드로이드 초보자 https://developer.android.com/reference/android/os/Environment.html – tgkprog

관련 문제