如何获取通过wifi直接在android中传输的文件的文件名?

时间:2013-05-29 04:52:44

标签: android file-transfer wifi-direct

我已经看到了关于这个问题的一个例子。但是当我尝试它时,它只是在这段代码File f = new File(Uri.parse(uri.toString()));中出现错误,并且只是说构造函数文件(Uri)是未定义的。我已经多次坚持这个错误了。我不知道它有什么问题,因为其他人可以工作。以下是建议的代码

public class WiFiDirectBundle extends Serializable {
    private String fileName;
    private String mimeType;
    private Long fileSize;
    private byte[] fileContent;

    public WiFiDirectBundle() {}

    // adds a file to the bundle, given its URI
    public void setFile(Uri uri) {
        File f = new File(Uri.parse(uri.toString()));

        fileName = f.getName();
        mimeType = MimeTypeMap.getFileExtensionFromUrl(f.getAbsolutePath());
        fileSize = f.length();

        FileInputStream fin = new FileInputStream(f);        
        fileContent = new byte[(int) f.length()];
        fin.read(fileContent);
    }

    // restores the file of the bundle, given its directory (change to whatever
    // fits you better)
    public String restoreFile(String baseDir) {
        File f = new File(baseDir + "/" + fileName);
        try {
            FileOutputStream fos = new FileOutputStream(f);
            if (fileContent != null) {
                fos.write(fileContent);
            }

            fos.close();
            return f.getAbsolutePath();

        } catch (IOException e) {
                e.printStackTrace();
        }

        return null;
    }

    public String getFileName() {
        return fileName;
    }

    public String getMimeType() {
        return mimeType;
    }

    public Long getFileSize() {
        return fileSize;
    }
}

这是原始的问题: How to find file name of a file which is transferred via wifi direct mode in android? 我也是Wifi Direct的初学者,我可以成功链接两个设备和传输文件,但我想链接更多的设备和传输文件顺序,任何人都可以给我一些关于学习它的建议或一些关于如何做的例子。谢谢!

2 个答案:

答案 0 :(得分:0)

使用

File f = new File(uri.getPath());

而不是

File f = new File(Uri.parse(uri.toString()));

从Uri获取文件路径

答案 1 :(得分:0)

您可以使用内容解析程序从其uri打开文件的输入流 ContentResolver cr = getContentResolver(); InputStream in = cr.OpenInputStream(file_uri); 您可以使用此输入流从文件中读取