Guardar archivo interno en mi propia carpeta interna en Android

Intento guardar un archivo txt en mi carpeta, en el almacenamiento interno, pero siempre tengo el mismo problema:

"Fuente no encontrada"

Escribo mi código de diferentes maneras expresadas aquí de la siguiente manera, pero en todos los sentidos tengo el mismo problema.

Vale la pena decir que incluso agrego

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

en Manifest.xml que no es necesario para el almacenamiento interno.

No es necesario decir que no tengo ningún problema para guardar archivos en / data / data / package / files ruta, pero cuando agrego mi carpeta en la raíz de los archivos, por ejemplo, / data / data / package / files / myforlder / myfile.txt Me enfrento al problema "Fuente no encontrada".

¿Podrías señalarme en la dirección correcta para resolver esto?

La segunda pregunta es esa, para guardar un archivo en una carpeta externa en almacenamiento externo.
(por ejemplo: sdCard o almacenamiento USB) ¿el escenario es diferente o es el mismo?

Primera forma:

OutputStreamWriter out;
try {
    File path=new File(getFilesDir(),"myfolder");
    File mypath=new File(path,"myfile.txt");
    if (!mypath.exists()) {
        out = new OutputStreamWriter(openFileOutput( mypath.getAbsolutePath() , MODE_PRIVATE));
        out.write("test");
        out.close();
    }                           
}

Segunda forma:

OutputStreamWriter out;
try {
    ContextWrapper cw = new ContextWrapper(this);
    File path = cw.getDir("myfolder", Context.MODE_PRIVATE);
    if (!path.exists()) {
        path.createNewFile();
        path.mkdir();
    }
    File mypath=new File(path,"myfile.txt");
    if (!mypath.exists()) {
        out = new OutputStreamWriter(openFileOutput( mypath.getAbsolutePath() , MODE_PRIVATE));
        out.write("test");
        out.close();
    }
}

Tercera forma:

File path=getFilesDir();
String mypath=path.toString() + "/myfolder";
OutputStreamWriter out;
try {
    File  f = new File(mypath , "/myfile.txt"   );
out = new OutputStreamWriter(openFileOutput(f.getPath(), MODE_PRIVATE));
     out.write("test");
     out.close();                   
     }

Cuarto camino:

File path=getFilesDir();

OutputStreamWriter out;
    try {
    File f = new File(path.getPath() + "/myfolder/myfile.txt"   );
    out = new OutputStreamWriter(openFileOutput(f.getPath(), MODE_PRIVATE));
    out.write("test");
    out.close();                    
    }

Quinta forma:

File path=getFilesDir();                
OutputStreamWriter out;
try {
    File f = new File(path.getCanonicalPath() + "/myfile.txt");
    out = new OutputStreamWriter(openFileOutput( f.getPath(), MODE_PRIVATE));
    out.write("test");
    out.close();                    
    }

Respuestas a la pregunta(3)

Su respuesta a la pregunta