Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用文件f=新文件(文件pth)打开文件;_Java_File_Netbeans_Io_Drag - Fatal编程技术网

Java 无法使用文件f=新文件(文件pth)打开文件;

Java 无法使用文件f=新文件(文件pth)打开文件;,java,file,netbeans,io,drag,Java,File,Netbeans,Io,Drag,我试图通过拖放到JTextField来打开一个文件,但我总是得到错误 这是我的密码 public void drop(DropTargetDropEvent dtde) { String str4=null; try { JTextArea comp = null; if(Switchtab==2) comp=textarea1; if(Switchtab==3) comp=textarea2; if(Switch

我试图通过拖放到JTextField来打开一个文件,但我总是得到错误

这是我的密码

  public void drop(DropTargetDropEvent dtde) {
  String str4=null;
  try {
    JTextArea comp = null;
    if(Switchtab==2)
        comp=textarea1;
     if(Switchtab==3)
        comp=textarea2;
      if(Switchtab==4)
        comp=textarea3;
       if(Switchtab==1)
        comp=textarea4;

  // Ok, get the dropped object and try to figure out what it is
  Transferable tr = dtde.getTransferable();
  DataFlavor[] flavors = tr.getTransferDataFlavors();
  for (int i = 0; i < flavors.length; i++) {
    System.out.println("Possible flavor: "
        + flavors[i].getMimeType());
    // Check for file lists specifically
    if (flavors[i].isFlavorJavaFileListType()) {
      // Great! Accept copy drops...
      dtde.acceptDrop(DnDConstants.ACTION_COPY);
     // comp.setText("Successful file list drop.\n\n");

      // And add the list of file names to our text area
      java.util.List list = (java.util.List) tr
          .getTransferData(flavors[i]);
      for (int j = 0; j < list.size(); j++) {
        //wcomp.append(list.get(j) + "\n");
       str4=list.get(j)+"\n";

      }

     // Replace '\' with '/' 
      file_pth = str4.replaceAll("\\\\","/" );  
     System.out.println(str4.replaceAll("\\\\","/" ));

      //Open the file


        try {



                File f = new File(file_pth);
                FileInputStream fobj = new FileInputStream(f);
                int len = (int) f.length();
                str4 = "";
                for (int j = 0; j < len; j++) {
                    char str5 = (char) fobj.read();
                    str4 = str4 + str5;

                }

                comp.setText(str4);


            setTitle(str4);

        } catch (Exception e) {
            System.out.println("Caught::" + e);
        }

      // If we made it this far, everything worked.
      dtde.dropComplete(true);
      return;
    }
  }
  // Hmm, the user must not have dropped a file list
  System.out.println("Drop failed: " + dtde);
  dtde.rejectDrop();
} catch (Exception e) {
  e.printStackTrace();
  dtde.rejectDrop();
}
} 
输出不显示替换的字符串。 它用一个反斜杠显示上一个字符串。

编辑

从isFlavorJavaFileListType的

如果指定的DataFlavor表示文件对象列表,则返回true

因此,

FileInputStream fobj = new FileInputStream(list.get(list.length()-1));
我终于得到了答案。 简单解

java.util.List list = (java.util.List) tr
          .getTransferData(flavors[i]);
      for (int j = 0; j < list.size(); j++) {

       str4=list.get(j).toString();

      }

 File f = new File(str4);
                FileInputStream fobj = new FileInputStream(f);
...
...
..
java.util.List=(java.util.List)tr
.getTransferData(香料[i]);
对于(int j=0;j
发布您的错误/例外您的目录名中是否有空格?(
文件io
)它适用于没有空间的文件吗?如果对路径进行硬编码,它是否有效<代码>文件f=新文件(“c:/kevin_java/File io/DemoIO.java”)你确定这是正确的路径吗?@kamil我已经发布了我的error@JonSkeet是的,我的目录里有空间。如果我在没有空格的目录中执行此操作,则会出现相同的错误。主要问题在于行File f=new File(File_pth);我无法获取有效文件。@user3712382实际上,
str4=list.get(j)+“\n”是问题所在。请注意,没有添加字符串,因此只能使用
file\u pth=str4.replaceAll(“\\\\\”,“/”)获取最后一个列表元素(它有一个尾随的换行符!)但即使在使用trim()之后,我仍然无法获得有效的文件路径。您是否仍然获得相同的异常?str4=(String)list.get(list.size()-1);我得到了异常java.lang.ClassCastException:java.io.File不能转换为java.lang.String
java.util.List list = (java.util.List) tr
          .getTransferData(flavors[i]);
      for (int j = 0; j < list.size(); j++) {

       str4=list.get(j).toString();

      }

 File f = new File(str4);
                FileInputStream fobj = new FileInputStream(f);
...
...
..