Salvar arquivo interno em minha própria pasta interna no Android

Tento salvar um arquivo txt na minha pasta, no armazenamento interno, mas sempre enfrento o mesmo problema:

"Fonte não encontrada"

Eu escrevo meu código de maneiras diferentes, expressas aqui da seguinte maneira, mas de todas as formas tenho o mesmo problem

Vale a pena dizer que eu até adiciono

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

no Manifest.xml que não é necessário para armazenamento intern

É desnecessário dizer que não tenho nenhum problema para salvar arquivos em / dados / dados / pacote / arquivos path, mas quando adiciono minha pasta na raiz dos arquivos, por exemplo / data / data / pacote / arquivos / myforlder / myfile.txt Eu enfrento o problema "Origem não encontrada"

Pode me apontar na direção certa para resolver isso?

A segunda pergunta é que, para salvar um arquivo em uma pasta externa no armazenamento extern
(por exemplo: armazenamento sdCard ou USB) o cenário é diferente ou é o mesmo?

First Way:

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 maneira:

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();
    }
}

Terceiro caminho:

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();                   
     }

Fourth Way:

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 maneira:

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();                    
    }

questionAnswers(3)

yourAnswerToTheQuestion