0

この質問に関する例を見てきましたが、試してみると、このコードでエラーが発生し、File f = new File(Uri.parse(uri.toString()));Constructor File(Uri) is undefined とだけ表示されます。私は何日もこのエラーで立ち往生しています。他の人が働くことができるので、何が悪いのかわかりません。以下は推奨コードです

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

そして、これは元の質問です: Androidでwifiダイレクトモードを介して転送されたファイルのファイル名を見つける方法は? また、私はWifi Directの初心者ですが、2つのデバイスをリンクしてファイルを転送することはできますが、より多くのデバイスをリンクしてファイルを転送したいです。

4

2 に答える 2

0

コンテンツ リゾルバー ContentResolver cr=getContentResolver(); を使用して、URI からファイルの入力ストリームを開くことができます。InputStream in=cr.OpenInputStream(file_uri); この入力ストリームを使用して、ファイルから読み取ることができます

于 2013-06-06T09:50:22.873 に答える
0

使用する

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

それ以外の

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

Uriからファイルパスを取得する

于 2013-05-29T05:01:34.760 に答える