mirror of
https://github.com/TeamAmaze/AmazeFileManager.git
synced 2026-10-24 01:25:00 +08:00
Merge pull request #3295 from zhanghai/patch-1
Truncate existing text files when writing.
This commit is contained in:
+2
-2
@@ -84,13 +84,13 @@ public class WriteTextFileCallable implements Callable<Unit> {
|
||||
DocumentFile documentFile =
|
||||
DocumentFile.fromSingleUri(AppConfig.getInstance(), fileAbstraction.uri);
|
||||
if (documentFile != null && documentFile.exists() && documentFile.canWrite()) {
|
||||
outputStream = contentResolver.openOutputStream(fileAbstraction.uri);
|
||||
outputStream = contentResolver.openOutputStream(fileAbstraction.uri, "wt");
|
||||
} else {
|
||||
destFile = FileUtils.fromContentUri(fileAbstraction.uri);
|
||||
outputStream = openFile(destFile, context.get());
|
||||
}
|
||||
} else {
|
||||
outputStream = contentResolver.openOutputStream(fileAbstraction.uri);
|
||||
outputStream = contentResolver.openOutputStream(fileAbstraction.uri, "wt");
|
||||
}
|
||||
break;
|
||||
case FILE:
|
||||
|
||||
+27
-24
@@ -27,6 +27,30 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.robolectric.Shadows.shadowOf;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
import com.amaze.filemanager.file_operations.exceptions.ShellNotRunningException;
|
||||
import com.amaze.filemanager.file_operations.exceptions.StreamNotFoundException;
|
||||
import com.amaze.filemanager.filesystem.EditableFileAbstraction;
|
||||
import com.amaze.filemanager.filesystem.FileUtil;
|
||||
import com.amaze.filemanager.filesystem.root.ConcatenateFileCommand;
|
||||
import com.amaze.filemanager.shadows.ShadowContentResolver;
|
||||
import com.amaze.filemanager.shadows.ShadowMultiDex;
|
||||
|
||||
import org.apache.ftpserver.util.IoUtils;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
import org.robolectric.shadow.api.Shadow;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@@ -38,31 +62,9 @@ import java.io.OutputStream;
|
||||
import java.io.StringReader;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
|
||||
import org.apache.ftpserver.util.IoUtils;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.Config;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
|
||||
import com.amaze.filemanager.file_operations.exceptions.ShellNotRunningException;
|
||||
import com.amaze.filemanager.file_operations.exceptions.StreamNotFoundException;
|
||||
import com.amaze.filemanager.filesystem.EditableFileAbstraction;
|
||||
import com.amaze.filemanager.filesystem.FileUtil;
|
||||
import com.amaze.filemanager.filesystem.root.ConcatenateFileCommand;
|
||||
import com.amaze.filemanager.shadows.ShadowMultiDex;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Environment;
|
||||
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
@Config(
|
||||
shadows = {ShadowMultiDex.class},
|
||||
shadows = {ShadowMultiDex.class, ShadowContentResolver.class},
|
||||
sdk = {JELLY_BEAN, KITKAT, P})
|
||||
public class WriteTextFileCallableTest {
|
||||
|
||||
@@ -75,7 +77,8 @@ public class WriteTextFileCallableTest {
|
||||
Context ctx = ApplicationProvider.getApplicationContext();
|
||||
ContentResolver cr = ctx.getContentResolver();
|
||||
ByteArrayOutputStream bout = new ByteArrayOutputStream();
|
||||
shadowOf(cr).registerOutputStream(uri, bout);
|
||||
ShadowContentResolver scr = Shadow.extract(cr);
|
||||
scr.registerOutputStream(uri, bout);
|
||||
|
||||
WriteTextFileCallable task =
|
||||
new WriteTextFileCallable(
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.amaze.filemanager.shadows
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.net.Uri
|
||||
import org.robolectric.annotation.Implementation
|
||||
import org.robolectric.annotation.Implements
|
||||
import org.robolectric.shadows.ShadowContentResolver
|
||||
import java.io.OutputStream
|
||||
|
||||
/**
|
||||
* [ShadowContentResolver] implementation to include
|
||||
* [ContentResolver.openOutputStream] with Uri and open mode arguments.
|
||||
*
|
||||
* @see ContentResolver.openOutputStream(uri, String)
|
||||
*/
|
||||
@Implements(ContentResolver::class)
|
||||
class ShadowContentResolver : ShadowContentResolver() {
|
||||
|
||||
/**
|
||||
* Implements [ContentResolver.openOutputStream] with open mode parameter.
|
||||
*
|
||||
* Simply delegate to one without open mode.
|
||||
*/
|
||||
@Implementation
|
||||
fun openOutputStream(uri: Uri, mode: String): OutputStream? = super.openOutputStream(uri)
|
||||
}
|
||||
Reference in New Issue
Block a user