0

内部ストレージにデータを書き込もうとしています。問題はそれを読むときです。何も読まない。Logcatは、それに何かを書いていると言います。しかし、私がそれを読んだとき、Log catは空だと言っています。これは私のファイルマネージャーです:

public class FileManager {  
    File dir;
    File driveFile;
    BufferedWriter writer=null;
    BufferedReader reader=null;

    public FileManager(Context context,String name){
        dir = new File(context.getFilesDir(),"drives");
        dir.mkdirs();
        driveFile = new File(dir,name+".txt");
        Log.d("FileManager",driveFile.getAbsolutePath());
    }

    public void open() throws IOException{
        writer = new BufferedWriter(new FileWriter(driveFile));
        reader = new BufferedReader(new FileReader(driveFile));
    }

    public void close() throws IOException{
        writer.close();
        reader.close();
    }

    public boolean writeTrackPoints(Drive drive){
        TrackPoint [] trackPoints=drive.getTrackPoints();
        Log.d("FileManager", "writing....");
        for(int i=0;i<trackPoints.length;i++){
            try {
                String line = trackPoints[i].getParsingString()+"\r\n";
                writer.write(line);
                writer.flush();
                Log.d("FileManager", "Writing" + line);
            } catch (IOException e) {
                return false;
            }           
        }       
        return true;
    }

    public boolean readTrackPoints(Drive drive){
        String line=null;
        Log.d("FileManager", "reading....");
        try {
            while((line = reader.readLine())!=null){
                Log.d("FileManager", "Reading: "+line);
                drive.addTrackPoint(new TrackPoint(line));
            }
        } catch (IOException e) {
            Log.d("FileManager", e.getMessage());
            return false;
        }       
        return true;
    }
}

デバイスがルート化されていないため、ファイルが空かどうかを確認できません。読書中の循環中に踏み込んでいないことを認識しています。一度に両方のストリームを開くのは問題ではありませんか?

4

1 に答える 1

1

私はそれを解決しました。問題は、open/close メソッドにありました。おそらく、両方のストリームを一度に開くことはできません。これは FileManager を編集したものです:

public class FileManager {

    File dir;
    File driveFile;
    BufferedWriter writer=null;
    BufferedReader reader=null;
    public FileManager(Context context,String name){
        dir = new File(context.getFilesDir(),"drives");
        dir.mkdirs();
        driveFile = new File(dir,name+".txt");
        Log.d("FileManager",driveFile.getAbsolutePath());
    }

    public void writeTrackPoints(Drive drive) throws IOException{
        writer = new BufferedWriter(new FileWriter(driveFile));
        TrackPoint [] trackPoints=drive.getTrackPoints();
        for(int i=0;i<trackPoints.length;i++){
            String line = trackPoints[i].getParsingString()+"\r\n";
            writer.write(line);
            writer.flush();
        }
        writer.close();
    }

    public void readTrackPoints(Drive drive) throws IOException{
        reader = new BufferedReader(new FileReader(driveFile));
        String line=null;
        while((line = reader.readLine())!=null){
            drive.addTrackPoint(new TrackPoint(line));
        }
        reader.close();
    }
}
于 2013-09-28T11:40:34.263 に答える