我已经看到了关于这个问题的一个例子。但是当我尝试它时,它只是在这段代码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的初学者,我可以成功链接两个设备和传输文件,但我想链接更多的设备和传输文件顺序,任何人都可以给我一些关于学习它的建议或一些关于如何做的例子。谢谢!
答案 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); 您可以使用此输入流从文件中读取