当我在虚拟机器人(1.5)中运行代码时它运行良好,TextSwitcher显示来自/ sdcard / documents /的每个txt文件的前80个字符,但是当我在我的三星Galaxy i7500(1.6)上运行它时在TextSwitcher中没有内容,但在LogCat中有txt文件的FileNames。
我的代码:
public void getTxtFiles(){
//Scan /sdcard/documents and put .txt files in array File TxtFiles[]
String path = Environment.getExternalStorageDirectory().toString()+"/documents/";
String files;
File folder = new File(path);
if(folder.exists()==false){if (!folder.mkdirs()) {
Log.e("TAG", "Create dir in sdcard failed");
return;
}}
else{
File listOfFiles[] = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++)
{
if (listOfFiles[i].isFile())
{
files = listOfFiles[i].getName();
if (files.endsWith(".txt") || files.endsWith(".TXT"))
{
if((files.length()-1)>i){resizeArray(TxtFiles, files.length()+10);}
TxtFiles[i]=listOfFiles[i];
System.out.println(TxtFiles[i]);
}
}
}}
}
private void updateCounter(int Pozicija) {
if(Pozicija<0){Toast.makeText(getApplicationContext(), R.string.LastTxt, 5).show();
mCounter++;}
else if(TxtFiles[mCounter]!=null){
TextToShow = getContents(TxtFiles[mCounter]);
if(TextToShow.length()>80)TextToShow=TextToShow.substring(0, 80);
mSwitcher.setText(TextToShow);
System.out.println(Pozicija);
}
else mCounter--;
}
static public String getContents(File aFile) {
//...checks on aFile are elided
StringBuilder contents = new StringBuilder();
try {
//use buffering, reading one line at a time
//FileReader always assumes default encoding is OK!
BufferedReader input = new BufferedReader(new FileReader(aFile));
try {
String line = null; //not declared within while loop
/*
* readLine is a bit quirky :
* it returns the content of a line MINUS the newline.
* it returns null only for the END of the stream.
* it returns an empty String if two newlines appear in a row.
*/
while (( line = input.readLine()) != null){
contents.append(line);
contents.append(System.getProperty("line.separator"));
}
}
finally {
input.close();
}
}
catch (IOException ex){
ex.printStackTrace();
}
return contents.toString();
}
我可以通过LogCat写这些文件的内容!
有什么想法吗?
答案 0 :(得分:1)
问题解决了:Android基于Linux内核,并且具有文件权限。我想我的应用程序对/ sdcard / documents /.
中的那些文件没有权限