【问题标题】:Java Parameter Passing Issue [closed]Java参数传递问题[关闭]
【发布时间】:2017-05-25 23:23:50
【问题描述】:

我仍然是 Java 初学者,我正在创建一个简单的 Android 应用程序。为此,我需要在打开应用程序时创建 2 个文件夹。我创建了一个 getter 和 setter 类来在主类中传递文件夹名称参数。但它不起作用。不会出现任何错误。请帮我解决这个问题。

getter 和 setter 类

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

【问题讨论】:

  • @OP,你能告诉我什么不起作用吗?
  • @LoganKulinski - 这是正确的吗?参数传递正确吗?未创建文件夹。未发现错误。我已经添加了 mainfiest 的权限。
  • @sᴜʀᴇsʜᴀᴛᴛᴀ- 这是正确的吗?参数传递正确吗?未创建文件夹。未发现错误。我已经添加了 mainfiest 的权限。
  • @AnoopLL- 不,我需要在根目录中单独创建它。不在里面。请帮我。这个参数传递正确吗?

标签: java android parameter-passing


【解决方案1】:

这可能有效。在这种情况下,我假设您想为视频和音频创建单独的文件夹。如果要在视频中创建音频文件夹。在视频和音频之间附加额外的 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
}

【讨论】:

    【解决方案2】:

    让我向你解释一些事情......

    在创建new File() 时,我们将路径作为参数传递,例如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
    

    }

    【讨论】:

    • 非常感谢@Anoop LL。我从中学到了。再次感谢你。它有效。
    • @hiranya 不客气 :)
    【解决方案3】:

    我自己最近一直在努力编写这种代码,因为当您在某些设备上调用 Environment.getExternalStorageDirectory() 时,Android 会返回奇怪的目录。

    在我的设备上,我让它与myApplication.getApplicationContext().getCacheDir() 一起工作,但我只需要一个临时目录。

    见:Environment.DIRECTORY_DOWNLOADS returns incorrect directory

    注意:乍一看,您的代码似乎无法编译。您可能已将其简化以进行发布,但这无助于理解您的问题。

    【讨论】:

      【解决方案4】:

      参数传递正常。但是这个表达是可疑的:

      File.separator + video + audio
      

      相当于

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

      ... 这不太可能是您想要的。要获取文件夹名称,请使用 getter: 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());
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-17
        • 2017-12-05
        • 2015-03-13
        • 1970-01-01
        相关资源
        最近更新 更多