Improvement on WriteToFile.
This commit is contained in:
parent
046d1d3a26
commit
507878e10a
|
|
@ -1,6 +1,5 @@
|
||||||
package com.proculite.logmylocation;
|
package com.proculite.logmylocation;
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.ParcelFileDescriptor;
|
import android.os.ParcelFileDescriptor;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
@ -9,30 +8,22 @@ import androidx.activity.result.ActivityResultCallback;
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
import androidx.activity.result.contract.ActivityResultContracts;
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.core.app.ActivityCompat;
|
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.util.function.Consumer;
|
||||||
import java.nio.file.Files;
|
|
||||||
import java.nio.file.Paths;
|
|
||||||
|
|
||||||
public class WriteToFile implements ActivityResultCallback<Uri> {
|
public class WriteToFile implements ActivityResultCallback<Uri> {
|
||||||
private final String TAG = WriteToFile.class.getName();
|
private final String TAG = WriteToFile.class.getName();
|
||||||
private final InputStream fileContents;
|
private Consumer<OutputStream> fileConsumer;
|
||||||
private final AppCompatActivity activityCompat;
|
private final AppCompatActivity activityCompat;
|
||||||
|
private final ActivityResultLauncher<String> launcher;
|
||||||
|
|
||||||
public WriteToFile(AppCompatActivity activity, String fileName, String fileMimeType, InputStream fileContents)
|
public WriteToFile(AppCompatActivity activity, String fileMimeType)
|
||||||
{
|
{
|
||||||
this.fileContents = fileContents;
|
|
||||||
this.activityCompat = activity;
|
this.activityCompat = activity;
|
||||||
ActivityResultLauncher<String> launcher =
|
this.launcher = activity.registerForActivityResult(
|
||||||
activity.registerForActivityResult(new ActivityResultContracts.CreateDocument(fileMimeType), this);
|
new ActivityResultContracts.CreateDocument(fileMimeType), this);
|
||||||
launcher.launch(fileName);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -52,9 +43,7 @@ public class WriteToFile implements ActivityResultCallback<Uri> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try (FileOutputStream fileOutputStream = new FileOutputStream(fileDescriptor.getFileDescriptor())) {
|
try (FileOutputStream fileOutputStream = new FileOutputStream(fileDescriptor.getFileDescriptor())) {
|
||||||
while (fileContents.available() > 0) {
|
fileConsumer.accept(fileOutputStream);
|
||||||
fileOutputStream.write(fileContents.read());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
|
@ -62,11 +51,8 @@ public class WriteToFile implements ActivityResultCallback<Uri> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static WriteToFile WriteBytes(AppCompatActivity activity, String fileName, String fileMimeType, byte[] fileContents){
|
public void write(String fileName, Consumer<OutputStream> fileConsumer){
|
||||||
return new WriteToFile(activity, fileName, fileMimeType, new ByteArrayInputStream(fileContents));
|
this.fileConsumer = fileConsumer;
|
||||||
}
|
launcher.launch(fileName);
|
||||||
|
|
||||||
public static WriteToFile WriteString(AppCompatActivity activity, String fileName, String fileMimeType, String fileContents){
|
|
||||||
return WriteBytes(activity, fileName, fileMimeType, fileContents.getBytes(StandardCharsets.UTF_8));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue