Tomcat 6: как удалить временные файлы после того, как веб-вызов метода закончился?

Класс AccountPicker находится в пространстве имен Android.Gms.Common и доступен через пакет nuget Xamarin.GooglePlayServices.Basement:

Примечание. Обычно Basement устанавливается как зависимость одного из других [ 116] пакетов (Карты / Места / Задачи / ...), но вы можете установить его, и он добавит все Xamarin.Android.Support. * Зависимость ...

re: https://www.nuget.org/packages/Xamarin.GooglePlayServices.Basement

Пример; запросить учетную запись:

~~~
var intent = Android.Gms.Common.AccountPicker.NewChooseAccountIntent(null, null, new String[] { "com.google" }, false, null, null, null, null);
StartActivityForResult(intent, 99);
~~~

Получить учетную запись:

protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
    if (requestCode == 99 && resultCode == Result.Ok)
    {
        var accountName = data.GetStringExtra(AccountManager.KeyAccountName);
        Log.Debug("SO", accountName);
    }
}

9
задан Jen A 2 October 2008 в 16:40
поделиться

3 ответа

Я столкнулся с той же проблемой. Проблема в том, что стек JAX-WS управляет файлом. В вашем коде невозможно определить, когда JAX-WS завершил работу с файлом, поэтому вы не знаете, когда его удалить.

В моем случае я использую DataHandler в своей объектной модели, а не в файле. MyFileResult будет иметь следующее поле вместо поля файла:

private DataHandler handler;

Мое решение состояло в том, чтобы создать настроенную версию FileDataSource. Вместо того, чтобы возвращать FileInputStream для чтения содержимого файла, я возвращаю следующее расширение FileInputStream:

private class TemporaryFileInputStream extends FileInputStream {
    public TemporaryFileInputStream(File file) throws FileNotFoundException {
        super(file);
    }

    @Override
    public void close() throws IOException {
        super.close();
        file.delete();
    }
}

По сути, источник данных позволяет читать только один раз. После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

Проблема в том, что стек JAX-WS управляет файлом. В вашем коде невозможно определить, когда JAX-WS завершил работу с файлом, поэтому вы не знаете, когда его удалить.

В моем случае я использую DataHandler в своей объектной модели, а не в файле. MyFileResult будет иметь следующее поле вместо поля файла:

private DataHandler handler;

Мое решение состояло в том, чтобы создать настроенную версию FileDataSource. Вместо того, чтобы возвращать FileInputStream для чтения содержимого файла, я возвращаю следующее расширение FileInputStream:

private class TemporaryFileInputStream extends FileInputStream {
    public TemporaryFileInputStream(File file) throws FileNotFoundException {
        super(file);
    }

    @Override
    public void close() throws IOException {
        super.close();
        file.delete();
    }
}

По сути, источник данных позволяет читать только один раз. После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

Проблема в том, что стек JAX-WS управляет файлом. В вашем коде невозможно определить, когда JAX-WS завершил работу с файлом, поэтому вы не знаете, когда его удалить.

В моем случае я использую DataHandler в своей объектной модели, а не в файле. MyFileResult будет иметь следующее поле вместо поля файла:

private DataHandler handler;

Мое решение состояло в том, чтобы создать настроенную версию FileDataSource. Вместо того, чтобы возвращать FileInputStream для чтения содержимого файла, я возвращаю следующее расширение FileInputStream:

private class TemporaryFileInputStream extends FileInputStream {
    public TemporaryFileInputStream(File file) throws FileNotFoundException {
        super(file);
    }

    @Override
    public void close() throws IOException {
        super.close();
        file.delete();
    }
}

По сути, источник данных позволяет читать только один раз. После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

В вашем коде невозможно определить, когда JAX-WS завершил работу с файлом, поэтому вы не знаете, когда его удалить.

В моем случае я использую DataHandler в своей объектной модели, а не в файле. MyFileResult будет иметь следующее поле вместо поля файла:

private DataHandler handler;

Мое решение состояло в том, чтобы создать настроенную версию FileDataSource. Вместо того, чтобы возвращать FileInputStream для чтения содержимого файла, я возвращаю следующее расширение FileInputStream:

private class TemporaryFileInputStream extends FileInputStream {
    public TemporaryFileInputStream(File file) throws FileNotFoundException {
        super(file);
    }

    @Override
    public void close() throws IOException {
        super.close();
        file.delete();
    }
}

По сути, источник данных позволяет читать только один раз. После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

В вашем коде невозможно определить, когда JAX-WS завершил работу с файлом, поэтому вы не знаете, когда его удалить.

В моем случае я использую DataHandler в своей объектной модели, а не в файле. MyFileResult будет иметь следующее поле вместо поля файла:

private DataHandler handler;

Мое решение состояло в том, чтобы создать настроенную версию FileDataSource. Вместо того, чтобы возвращать FileInputStream для чтения содержимого файла, я возвращаю следующее расширение FileInputStream:

private class TemporaryFileInputStream extends FileInputStream {
    public TemporaryFileInputStream(File file) throws FileNotFoundException {
        super(file);
    }

    @Override
    public void close() throws IOException {
        super.close();
        file.delete();
    }
}

По сути, источник данных позволяет читать только один раз. После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

MyFileResult будет иметь следующее поле вместо поля файла:

private DataHandler handler;

Мое решение состояло в том, чтобы создать настроенную версию FileDataSource. Вместо того, чтобы возвращать FileInputStream для чтения содержимого файла, я возвращаю следующее расширение FileInputStream:

private class TemporaryFileInputStream extends FileInputStream {
    public TemporaryFileInputStream(File file) throws FileNotFoundException {
        super(file);
    }

    @Override
    public void close() throws IOException {
        super.close();
        file.delete();
    }
}

По сути, источник данных позволяет читать только один раз. После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

MyFileResult будет иметь следующее поле вместо поля файла:

private DataHandler handler;

Мое решение состояло в том, чтобы создать настроенную версию FileDataSource. Вместо того, чтобы возвращать FileInputStream для чтения содержимого файла, я возвращаю следующее расширение FileInputStream:

private class TemporaryFileInputStream extends FileInputStream {
    public TemporaryFileInputStream(File file) throws FileNotFoundException {
        super(file);
    }

    @Override
    public void close() throws IOException {
        super.close();
        file.delete();
    }
}

По сути, источник данных позволяет читать только один раз. После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

После закрытия потока файл удаляется. Поскольку стек JAX-WS считывает файл только один раз, он работает.

Решение - своего рода взлом, но в данном случае кажется лучшим вариантом.

15
ответ дан 4 December 2019 в 13:51
поделиться

Вы используете стандартные файлы временного файла Java? Если так, можно сделать это:

File script = File.createTempFile("temp", ".tmp", new File("./"));
... use the file ...
script.delete(); // delete when done.
0
ответ дан 4 December 2019 в 13:51
поделиться

папка работы, которую Вы настраиваете в контексте для этого веб-приложения, о котором Вы говорите. Можно ли установить этот рабочий каталог в известном каталоге? Если да, то можно найти временный файл в рамках каталога временной работы (что Вы знаете). После того как Вы находите, можно удалить его.

0
ответ дан 4 December 2019 в 13:51
поделиться
Другие вопросы по тегам:

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