本文的目的是介绍从java.io.File获取java.nio.file.Path对象的详细情况,特别关注java获取file文件名的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现
本文的目的是介绍从 java.io.File 获取 java.nio.file.Path 对象的详细情况,特别关注java获取file文件名的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解从 java.io.File 获取 java.nio.file.Path 对象的机会,同时也不会遗漏关于android java.io.File.fixSlashes(File.java:185)、Android导入java.nio.file.Files;无法解决、Java 6中java.nio.file.Files的替代方法、Java java.nio.file.NoSuchFileException 和 IO 无法写入文件的知识。
本文目录一览:- 从 java.io.File 获取 java.nio.file.Path 对象(java获取file文件名)
- android java.io.File.fixSlashes(File.java:185)
- Android导入java.nio.file.Files;无法解决
- Java 6中java.nio.file.Files的替代方法
- Java java.nio.file.NoSuchFileException 和 IO 无法写入文件
从 java.io.File 获取 java.nio.file.Path 对象(java获取file文件名)
是否可以从 a 获取 Path 对象java.io.File
?
我知道您可以使用toFile()
方法将路径转换为文件,但我找不到相反的转换。有没有办法在 Java 6 或更低版本中做到这一点?
答案1
小编典典是的,您可以File
使用File.toPath()
.
请记住,这仅适用于 Java 7+。Java 6 及以下版本没有它。
android java.io.File.fixSlashes(File.java:185)
java.lang.NullPointerException at java.io.File.fixSlashes(File.java:185) at java.io.File.<init>(File.java:134)
保存图片的功能代码是:
public static String sharePhoto(Context context,Bitmap bmp) { File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/Folder"); boolean success = true; String file_path = null; if (!folder.exists()) { success = folder.mkdir(); } if (success) { file_path = folder + "/Img_" + System.currentTimeMillis() / 1000 + ".jpg"; } OutputStream os = null; try { os = new FileOutputStream(file_path); bmp.compress(Bitmap.CompressFormat.JPEG,100,os); } catch (IOException e) { e.printstacktrace(); } } else { // Do something else on failure } Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); File f = new File(file_path); Uri contentUri = Uri.fromFile(f); mediaScanIntent.setData(contentUri); context.sendbroadcast(mediaScanIntent); return file_path; }
解决方法
File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Pictures/MyFolder");
事实是getExternalStorageDirectory()返回File.您需要获取该文件的绝对路径并与“/ Pictures / MyFolder”连接.
Android导入java.nio.file.Files;无法解决
我正在尝试新的Gmail API,示例使用java.nio.file包中的类,e.i.文件和文件系统.
这些类是在Java jdk 1.7中引入的,因为我在我的Android应用程序中运行jdk 1.7.0_65,我不知道为什么Android Studio找不到这些类.
进口是:
import java.nio.file.FileSystems;
import java.nio.file.Files;
我的build.gradle文件当然告诉系统像这样使用v.1.7
android {
compileSdkVersion 19
buildToolsversion '20'
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
我指向jdk的正确目录:
jdk列在“外部库”部分中:
如果我浏览Java文件,我甚至可以找到java.nio.file.Files和.FileSystems:
现在,****正在发生什么!?根据我的理解,我在这里做的一切,有什么建议吗?
解决方法:
Android不提供“传统java”必须提供的所有类.文件是Android不提供的类之一.
您可以在这里查看Android中可用的类:http://developer.android.com/reference/classes.html
很遗憾,您必须使用其他函数/类来实现相同的功能.
PS:您的屏幕截图中显示了该类,因为您浏览了PC上安装的java类,而不是Android手机/平板电脑上可用的类.
更新
从API版本26开始,Files / FileSystem类已可用.
Java 6中java.nio.file.Files的替代方法
我有以下使用Java 7功能(如 java.nio.file.Files和java.nio.file.Paths)的代码
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class JacksonObjectMapper {
public static void main(String[] args) throws IOException {
byte[] jsonData = Files.readAllBytes(Paths.get("employee.txt"));
ObjectMapper objectMapper = new ObjectMapper();
Employee emp = objectMapper.readValue(jsonData,Employee.class);
System.out.println("Employee Object\n"+emp);
Employee emp1 = createEmployee();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT,true);
StringWriter stringEmp = new StringWriter();
objectMapper.writeValue(stringEmp,emp1);
System.out.println("Employee JSON is\n"+stringEmp);
}
}
现在,我必须在Java 6上运行相同的代码,除了使用FileReader之外,还有哪些最佳替代方案?
Java java.nio.file.NoSuchFileException 和 IO 无法写入文件
如何解决Java java.nio.file.NoSuchFileException 和 IO 无法写入文件?
我尝试了三个不同的项目并对其进行了测试,但没有一个有效..
- 尝试写入文件时,我收到“java.nio.file.NoSuchFileException”;
List<String> contents = Arrays.asList("hey,there!","What''s up?");
Files.write(Paths.get("C://Users//*****//Documents//NetBeansprojects//SelTest//output.txt"),contents);
Java 输出:
Exception in thread "main" java.nio.file.NoSuchFileException: C:\Users\*****\Documents\NetBeansprojects\SelTest\output.txt
我已经创建并准备好了那个 output.txt 文件。
还有一个错误,在尝试从 BufferedImage 保存图像时,我的代码已成功执行但没有创建任何内容?
ImageIO.write(outputimage,"jpg",new File("C:\\Users\\****\\Documents\\NetBeansprojects\\SelTest\\love.jpg"));
我可以将 BufferedImage 显示为标签,并且渲染得很好,但是 ImageIO.write 显示没有错误代码成功执行但没有创建文件!
我今天尝试的最后一件事是阅读 Selenium 驱动程序。我已经很好地设置了驱动程序路径,它在正确的位置,但仍然没有找到驱动程序。
System.setProperty("webdriver.edge.driver","C:\\Users\\*****\\Documents\\NetBeansprojects\\SelTest\\msedgedriver.exe");
WebDriver driver = new EdgeDriver();
Java 输出
Exception in thread "main" java.lang.IllegalStateException: The driver executable does not exist: C:\Users\*****\Documents\NetBeansprojects\SelTest\msedgedriver.exe
at com.google.common.base.Preconditions.checkState(Preconditions.java:585)
我使用的是 Apache NetBeans IDE 12 和我的 Java:
openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM (build 11.0.11+9-LTS,mixed mode)
解决方法
- 您的绝对路径斜杠必须是反斜杠。
- 如果渲染图像为空或为空,则什么都不会发生
Parameter im: @org.jetbrains.annotations.NotNull
一次只关注一个问题。 Files.write
方法不会为您创建文件夹结构,因此当目录路径不存在时会给出 java.nio.file.NoSuchFileException
。
您可以添加一个步骤来为 ImageIO 和文本文件示例创建父文件夹的路径,如下所示:
Path p = Paths.get("C:/Users/*****/Documents/NetBeansProjects/SelTest/output.txt");
Files.createDirectories(p.getParent())
Files.write(p,contents);
您不需要在 Windows 上的路径中使用双斜杠 //
。
我们今天的关于从 java.io.File 获取 java.nio.file.Path 对象和java获取file文件名的分享就到这里,谢谢您的阅读,如果想了解更多关于android java.io.File.fixSlashes(File.java:185)、Android导入java.nio.file.Files;无法解决、Java 6中java.nio.file.Files的替代方法、Java java.nio.file.NoSuchFileException 和 IO 无法写入文件的相关信息,可以在本站进行搜索。
本文标签: