java - android:内部文件读取

标签 java android file

我正在尝试将一些数据写入内部存储。问题是当我读它的时候。它不读取任何内容。 Logcat 说它在里面写了一些东西。但当我读到它时,日志猫说它是空的。这是我的文件管理器:

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

我无法检查文件是否为空,因为我的设备未获得 root 权限。我认识到它在阅读中没有进入 while 循环。我同时打开两个流不是有问题吗?

最佳答案

我已经解决了。问题出在打开/关闭方法中。也许不可能同时打开两个流。这是编辑后的文件管理器:

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

关于java - android:内部文件读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19066291/

相关文章:

java.lang.LinkageError : loader constraint violation: when resolving method "com. sun.tools.javac.api.JavacTool.getTask

java - 使用同步列表

Java/JDBC/MySQL : How do I troubleshoot why DriverManager. getConnection() 返回 NULL?

c# - 仅可在只写模式下请求追加访问

file - 扫描硬盘时的进度条

无需更改防火墙的 WCF SSL 安全传输或大负载

Java 获取当前日期不带时间戳的程序

android - 尽管输入获得焦点,但无法在 Android 移动网站上的 HTML 输入字段中输入文本

java - 如何在 Java、Android 上从 .sql 文件复制数据?

java - 谷歌地图自定义标记android