2017-01-11 9 views
1

私はまだJavaの初心者ですが、私は単純なAndroidアプリケーションを作成しています。そのためには、アプリケーションを開くときに2つのフォルダを作成する必要があります。メインクラスにフォルダ名パラメータを渡すgettersとsetterクラスを作成しました。しかし、それは動作しません。エラーは発生しません。これを解決するために私を助けてください。 Androidは時に奇妙なディレクトリを返すので、私は、自分自身は、最近の仕事にこの種のコードを作るのに苦労しましたJavaパラメータを渡す問題

ゲッターとセッタークラス

public class CommonClass { 

private String folderName; 

public CommonConfig(String folderName) { 
    this.folderName = folderName; 
} 

public CommonConfig() { 
} 

public String getFolderName() { 

    return folderName; 
} 

public void setFolderName(String folderName) { 
    this.folderName = folderName; 
} 

}

メインクラス

public class MainActivityClass extends Activity { 
    private static final String TAG = "svsvsf"; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button button1=(Button)findViewById(R.id.button1); 

    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      CommonClass video = new CommonClass(); 
      video.setFolderName("Video"); 

      CommonClass audio = new CommonClass(); 
      audio.setFolderName("Audio"); 

      TempVideoCreator(video,audio); 

     } 
    }); 
} 


public void TempFolderCreator(CommonConfig video,CommonConfig audio){ 


    File folder = new File(Environment.getExternalStorageDirectory() + 
      File.separator + video + audio); 

    boolean success = true; 
    if (!folder.exists()) { 
     success = folder.mkdirs(); 
    } 
    if (success) { 
      Log.d(TAG, "File already created"); 
    } else { 
     Log.d(TAG, "faileddd"); 
    } 
} 
+1

@OP、あなたが働いていないものを教えてくださいだろうか? –

+0

@LoganKulinski - これは正しいですか?パラメーターが正しく渡されましたか?フォルダが作成されていません。エラーは見つかりませんでした。私は既にmainfiestへのアクセス許可を追加しました。 – hiranya

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ-これは正しいですか?パラメーターが正しく渡されましたか?フォルダが作成されていません。エラーは見つかりませんでした。私は既にmainfiestへのアクセス許可を追加しました。 – hiranya

答えて

1

​​を作成している間、私たちはnew File("C://hiranya//video//newtextfile.txt")のようなパラメータとしてパスを渡している...あなたに

をいくつかのことを説明しましょう。あなたの場合、CommonクラスのオブジェクトをTempFolderCreatorに渡していて、そのオブジェクトをファイルに直接指定しています。これは間違っています。あなたはCommonClassオブジェクト内のフォルダ名を設定し、TempFolderCreator

public void TempFolderCreator(CommonConfig video,CommonConfig audio){ 


File videoFolder = new File(Environment.getExternalStorageDirectory() + 
     File.separator + video.getFolderName()); 
File audioFolder = new File(Environment.getExternalStorageDirectory() + 
     File.separator + audio.getFolderName()); 

boolean success = true; 
if (!videoFolder .exists()) { 
    success = folder.mkdirs(); 
} 
if (!audioFolder .exists()) { 
    success = folder.mkdirs(); 
} 
//rest of the code 

}

+0

ありがとうございます@Anoop LL。私はこれから学んだ。ありがとうございました。できます。 – hiranya

+0

@hiranyaあなたは歓迎です:) –

1

一部のデバイスではEnvironment.getExternalStorageDirectory()と呼ばれます。

私のデバイスではmyApplication.getApplicationContext().getCacheDir()と動作させましたが、一時的なディレクトリが必要でした。

参照:Environment.DIRECTORY_DOWNLOADS returns incorrect directory

注:は一見、あなたのコードをコンパイルすると思われることはありません。投稿のために簡略化しているかもしれませんが、これはあなたの問題を理解するのに役立ちません。

2

これが機能する場合があります。この場合、私はあなたがビデオとオーディオのための別々のフォルダを作成したいと仮定します。ビデオ内にオーディオフォルダを作成する場合。ビデオとオーディオの間にFile.seperatorを追加します。

public void TempFolderCreator(CommonConfig video,CommonConfig audio){ 


File folderVideo = new File(Environment.getExternalStorageDirectory() + 
     File.separator + video.getFolderName()); 
File folderAudio = new File(Environment.getExternalStorageDirectory() + 
     File.separator + audio.getFolderName()); 

boolean successVideo = true; 
boolean successAudio = true; 

if (!folderVideo.exists()) { 
    successVideo = folderVideo.mkdirs(); 
} 
if (!folderAudio.exists()) { 
    successAudio = folderAudio.mkdirs(); 
} 
//Arrange your error handling logic for Audio folder and video folder 
} 
1

パラメータの受け渡しがOKであるようになります。しかし、この表現は疑わしいです:

File.separator + video + audio 

File.separator + video.toString() + audio.toString() 

と同等であること...あなたが望む可能性がされていません。フォルダ名を取得するには、ゲッターを使用します。 video.getFolderName()

また、各フォルダを一度に作成するように注意してください。

すべて一緒にそれを置く:

private void createFolder(String folderName) 
    File folder = new File(Environment.getExternalStorageDirectory(), folderName); 

    boolean success = folder.exists(); 
    if (!success) { 
     success = folder.mkdirs(); 
    } 
    if (success) { 
     Log.d(TAG, "Folder "+folderName+" already created"); 
    } else { 
     Log.d(TAG, "Creating folder "+folderName+" failed"); 
    } 
} 

public void TempFolderCreator(CommonConfig video,CommonConfig audio){ 
    createFolder(video.getFolderName()); 
    createFolder(audio.getFolderName()); 
} 
関連する問題