GVKun编程网logo

从 java.io.File 获取 java.nio.file.Path 对象(java获取file文件名)

18

本文的目的是介绍从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文件名)

从 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)

android java.io.File.fixSlashes(File.java:185)

我在控制台崩溃和错误中出错了ANR次数.有时会出现此错误,我无法找到问题所在.
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;无法解决

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 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 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)

解决方法

  1. 您的绝对路径斜杠必须是反斜杠。
  2. 如果渲染图像为空或为空,则什么都不会发生 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 无法写入文件的相关信息,可以在本站进行搜索。

本文标签: