De manera simple los archivos en la SD se pueden guardar por cualquier App pero estos archivos son visibles tanto por el usuario (con tan solo abrir su explorador de archivos en el dispositivo) como por las demás aplicaciones.
Ahora si lo que queremos es evitar que el usuario vea dichos archivos necesitamos colocarlos en Assets o Raw, en ambos directorios podemos colocar cualquier tipo de archivo..cool no? Pero aquí la desventaja... Assets permite colocar los archivos de manera ordenada en carpetas como comúnmente lo hacemos en cualquier sistema operativo, mientras que Raw es OBLIGATORIO colocar los archivos SIN carpetas y ademas los nombres de los archivos DEBEN estar con minúsculas y/o números sin espacios o caracteres especiales.Pero que ventaja tiene uno sobre otro?? simple.. los archivos colocados en Raw podemos acceder a ellos mediante un ID y los colocados en Assets necesitamos obligatoriamente de un AssetManager para poder acceder a los mismos.
Entonces para poder abrir los archivos que tenemos... para titulos_archivos.txt:
InputStream fstream = context.getAssets().open("titulos_archivos.txt");
Ahora para abrir el Raw .. afile.pdf
InputStream is = getResources().openRawResource(R.raw.afile);
donde solo fue necesario escribir el nombre del archivo
y con este InputStream podemos hacer lo que necesitemos con nuestros archivos.
