Проанализируйте имя каталога от полного filepath в C#

Вы должны добавить onSuccessListener в filePath.getDownloadUrl (). я добавил код здесь

final StorageReference storRef = storageReference.child("profilePicture/"+ UUID.randomUUID().toString());
        storRef.putFile(userProfileUri)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                       storRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
                           @Override
                           public void onSuccess(Uri uri) {
                               //Log.d(TAG,"user profile url is: "+uri.toString());
                               saveEmailToFirebase(uri.toString());
                           }
                       }).addOnFailureListener(new OnFailureListener() {
                           @Override
                           public void onFailure(@NonNull Exception e) {
                               Log.d(TAG,"on download porfileuri failed"+e.getMessage());
                               Toast.makeText(LoginActivity.this, "profile picture uploading failed "+e.getMessage(), Toast.LENGTH_SHORT).show();
                           }
                       });

                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Toast.makeText(LoginActivity.this, "profile picture uploading failed "+e.getMessage(), Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                        double progress = (100.0*taskSnapshot.getBytesTransferred()/taskSnapshot
                                .getTotalByteCount());
                        Log.d(TAG,"File uploading "+(int)progress+"%");
                    }
                });
    }else {
        Toast.makeText(LoginActivity.this,"Please select Profile picture",Toast.LENGTH_SHORT).show();
    }
35
задан Peter Mortensen 23 August 2012 в 18:25
поделиться

5 ответов

Использование:

new FileInfo(@"C:\temp\temp2\foo\bar.txt").Directory.Name
73
ответ дан Tim Cooper 27 November 2019 в 06:38
поделиться

Далеко будьте этим, чтобы я не согласился со Стрельбой по тарелочкам, но я всегда использовал

Path.GetFileNameWithoutExtension(@"C:\temp\temp2\foo\bar.txt")

, я подозреваю, что FileInfo на самом деле касается файловой системы для получения, это - информация, где, поскольку я ожидал бы, что GetFileNameWithoutExtension является только строковыми операциями - таким образом, производительность одной по другому могла бы быть лучше.

8
ответ дан Handleman 27 November 2019 в 06:38
поделиться

I had an occasion when I was looping through parent child directories

string[] years = Directory.GetDirectories(ROOT);
foreach (var year in years)
{
    DirectoryInfo info = new DirectoryInfo(year);
    Console.WriteLine(info.Name);
    Console.WriteLine(year);
    //Month directories
    string[] months = Directory.GetDirectories(year);
    foreach (var month in months)
    {
        Console.WriteLine(month);
        //Day directories
        string[] days = Directory.GetDirectories(month);
        foreach (var day in days)
        {
            //checkes the files in the days
            Console.WriteLine(day);
            string[] files = Directory.GetFiles(day);
            foreach (var file in files)
            {
                Console.WriteLine(file);                               
            }
        }
    }
}

using this line I was able to get only the current directory name

DirectoryInfo info = new DirectoryInfo(year);
Console.WriteLine(info.Name);
2
ответ дан 27 November 2019 в 06:38
поделиться

Это будет зависеть от того, как вы хотите обрабатывать данные, но другой вариант - использовать String.Split.

string myStr = @"C:\foo\bar.txt";
string[] paths = myStr.Split('\\');
string dir = paths[paths.Length - 2]; //returns "foo"

Это не проверяет исключение массива вне границ, но вы поняли.

1
ответ дан 27 November 2019 в 06:38
поделиться

Я думаю, что самое простое решение -

DirectoryInfo dinfo = new DirectoryInfo(path);

string folderName= dinfo.Parent.Name;
7
ответ дан 27 November 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: