没有通过FileInputStream获取文件?

时间:2015-01-08 10:00:20

标签: java android bufferedreader fileinputstream filechannel

我正在尝试检查文件位置,以免被覆盖。为此,我必须使用FileInputStream,因为它有一个方法position(),可以与FileChannel一起使用。 BufferedReader不保持立场。

我的代码是:

FileChannel fc = null;
FileInputStream fis = null;      
int i=0;
long pos;
char c;
fis = new FileInputStream("File.txt");
   while((i=fis.read())!=-1)
                         {
                            fc = fis.getChannel();
                            pos = fc.position();
                            c = (char)i;
                            System.out.print("No of bytes read: "+pos);
                            System.out.println("; Char read: "+c);
                         }

我得到java.io.FileNotFoundException

  

/doneQuestionDetail.txt:打开失败:ENOENT(没有这样的文件或   目录)

这个错误意味着它没有从位置获取文件,因为文件没有存在,如果我使用BufferedReader

BufferedReader inputReader = new BufferedReader(
                                    new InputStreamReader(openFileInput("File.txt")));

此行中没有任何错误,意味着文件存在且FileInputStream未获取文件。

搜索完成后,我首先获取位置,然后将其提交给FileInputStream,然后我更改了代码:

String extr = Environment.getExternalStorageDirectory().toString();
                            File mFolder = new File(extr + "/imotax");
                            String s = "doneQuestionDetail.txt";
                            File f = new File(mFolder.getAbsolutePath(), s);
                             fis = new FileInputStream(f);

现在我收到一个错误:

  

java.io.FileNotFoundException:/mnt/sdcard/imotax/File.txt:open   失败:ENOENT(没有这样的文件或目录)

希望得到你的建议。感谢。

1 个答案:

答案 0 :(得分:1)

请尝试以下代码。

File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + File.separator
                        + "/imotax");
dir.mkdirs();
File f= new File(dir, fileToCreate);
if(!f.exists()){
f.createNewFile();
}

fis = new FileInputStream(f);