アプリ作って海外移住

コピペプログラマーのメモ

ディレクトリ取得 のロジック

①アラートダイログでディレクトリを選ぶ

②ボタン1を押すとその下の階層のディレクトリをダイアログ表示

③再帰的にさいごまで繰り返す。

④ファイル名を入力して、出力ファイル名を決める。

しかし、アンドロイドでCSV出力場所には制限がある。

android/data/アプリ名/

かFile file = Environment.getExternalStorageDirectory();
        // String path = file.getPath()+"/eigocsv.txt";

しかダメみたい。

 

 

 

 

 

 

public class CsvoutActivity extends Activity {
    int selectnum = -1;
    String result_item;
   
   
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_csvout);
       
       
        TextView tv3 = (TextView) findViewById(R.id.textView3);
        File file = Environment.getExternalStorageDirectory();
        // String path = file.getPath()+"/eigocsv.txt";
          String path = file.getPath();
         tv3.setText(path);
           
    }   

    protected void onResume(){
        super.onResume();   
       
        TextView tv3 = (TextView) findViewById(R.id.textView3);
       
         String edit_path= tv3.getText().toString();
         //入力されたファイルを取得
         File dir = new File(edit_path);
        //ディレクトリかの判断   
         if (dir.isDirectory() ){    
            edit_path = edit_path + "/";
            tv3.setText(edit_path);
            }
         
         
         
         
         
       
    }
   
    public void  button1action(View view){     
   
        TextView tv3 = (TextView) findViewById(R.id.textView3);
         
         final String edit_path= tv3.getText().toString();
        //入力されたファイルを取得
            File dir = new File(edit_path);
           //リストを取得
            final String files = dir.list();
            String chkflname="";
            int j = 0;            ///////////////////////まず、ディレクトリの数だけ取得////
            for (int i = 0; i < files.length; i++){ 
                 chkflname= edit_path + files[i];
                // Log.v(" chkflname  1111= ",""+ chkflname +"     "+i);
                 File chkdir = new File(chkflname);
                //Log.v(" chkflname= ",""+ chkflname +"     "+i);
                if (chkdir.isDirectory() ){
                    //Log.v("files j = ",""+files[i] +"     "+i); 
                    //dspfiles[j] = files[i];
                   j = j+1;
                   }
            }
            //ディレクトリの数だけテーブルにセット
            final String
dspfiles = new String[j];
            j = 0;
            for (int i = 0; i < files.length; i++){ 
                 chkflname= edit_path + files[i];
               
                 File chkdir = new File(chkflname);
               
                if (chkdir.isDirectory() ){
                     
                    dspfiles[j] = files[i];
                   j = j+1;
                   }
            } 
           
            // AlertDialog.Builderオブジェクト生成
            AlertDialog.Builder ad = new AlertDialog.Builder(this);   
           
              // タイトル指定
               ad.setTitle("選択して下さい");

              // アイコン指定
               ad.setIcon(R.drawable.ic_launcher);
             
               // 単一選択アイテムのリスト状態を管理
               selectnum = -1;
               ad.setSingleChoiceItems(dspfiles, selectnum, new DialogInterface.OnClickListener() {
         
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                           // タップされた位置(which)で要素の値を取得
                        // File dspFile = new File(files[which]); 
                        result_item = edit_path + dspfiles[which];
                        // Log.v("dspFile= ",""+result_item +"     "+dspfiles[which]); 
                       
                    } });

                //////////////////////////////////////////// 肯定的な意味を持つボタンを設定
             
               
              ad.setPositiveButton("OK", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {

                 // PositiveButto押下時の処理を記述します。
                //edit
                  TextView tv3 = (TextView) findViewById(R.id.textView3);
                 
                  tv3.setText(result_item);
                 
                  onResume();
              }      
    });
              ad.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface dialog, int which) {

                  
                      }
                    });

   
   
              ad.show();
   
   
    }

    @SuppressWarnings("deprecation")
    public void  button2action(View view){   
   
        //データベースヘルパーのインスタンスを作成する
           DatabaseHelper dbHelper = new DatabaseHelper(this);
           //データベースオブジェクトを取得する  書き込み可能 で
           SQLiteDatabase db = dbHelper.getWritableDatabase(); 
   
          
           Cursor cursor = null;
           int i;
         cursor = db.query( "ktable",new String { "_id", "seanno" , "narabino" , "kjp" , "ken" , "knote" },null, null, null, null, null );
           
        //データ数取得
        int numRows = cursor.getCount();
        //一番最初のデータの位置に移動
        cursor.moveToFirst();
        //entriesと言うテーブルをデータ数の分だけ作る
       
        final int
inp_id = new int[numRows];
        final int inp_seanno = new int[numRows];
        final int
inp_narabino = new int[numRows];
        final String inp_kjp = new String[numRows];
        final String
inp_ken = new String[numRows];
        final String[] inp_knote = new String[numRows];
       
        //データセット 2カラム目のsnameをセット
           for( i = 0; i < numRows; i++ ){
               inp_id[i] = cursor.getInt(0);
               inp_seanno[i] = cursor.getInt(1);
               inp_narabino[i]= cursor.getInt(2);
               inp_kjp[i]= cursor.getString(3);
               inp_ken[i]= cursor.getString(4);
               inp_knote[i]= cursor.getString(5);
              
               cursor.moveToNext();
           }
        
         //使い終わったら、必ずクローズ 
         cursor.close();
        
        
         String filePath = Environment.getExternalStorageDirectory() + "/memo.txt";
         File file = new File(filePath);
         file.getParentFile().mkdir();
        /* try {
             
             //File file = new File(file_name);
             BufferedWriter bw = new BufferedWriter(new FileWriter(file));
             for( i = 0; i < numRows; i++ ){
                
                 bw.write(inp_id[i] + "," + inp_seanno[i] + "," + inp_narabino[i] + "," + inp_kjp[i] + "," + inp_ken[i] + "," + inp_knote[i]);
                 bw.newLine();
                
                
             }
             
           
             
           
             
             bw.close();*/
             
             
             //BufferedWriterを利用してテキスト書き込み
                //※FileOutputStreamの第二引数をTrueにすると
                //追加書き込みし、Falseにすると上書き作成します。
         try {       
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath, false), "UTF-8"));
               
               
               
                for( i = 0; i < numRows; i++ ){
                     
                    bw.write("key=" + inp_id[i] + "," + inp_seanno[i] + "," + inp_narabino[i]);
                    bw.newLine();
                    bw.write("jp=" + inp_kjp[i]);
                    bw.newLine(); 
                    bw.write("en=" + inp_ken[i]);
                    bw.newLine();
                    bw.write("note=" +inp_knote[i]);
                    bw.newLine(); 
                }
               
               
               
               
                //BufferedWriterをクローズするのを忘れないようにする。
                bw.close();
               
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        
        
        
        
        
        
        
        
     /*   
        
        
         String filePath = Environment.getExternalStorageDirectory() + "/memo.txt";
         File file = new File(filePath);
         file.getParentFile().mkdir();
 
         FileOutputStream output = this.openFileOutput(filePath,MODE_PRIVATE);
                     output.write("fffffffffffffffff");
                    output.close();
        
       

         /*String filePath = Environment.getExternalStorageDirectory() + "/memo.txt";
         File file = new File(filePath);
         file.getParentFile().mkdir();
 
         FileOutputStream fos;
         try {
             fos = new FileOutputStream(file, true);  //true 追加 false 上書き
             OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
             BufferedWriter bw = new BufferedWriter(osw);
            
             for( i = 0; i < numRows; i++ ){
                
            
            
            
            
             String str =  ""  + inp_id[i];
             bw.write(str);
             bw.flush();
           
             }
            
            
             bw.close();
         } catch (Exception e) {
         }
    
     */
     };