Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 无法使用字符串concat创建新目录_Java_Mkdir - Fatal编程技术网

Java 无法使用字符串concat创建新目录

Java 无法使用字符串concat创建新目录,java,mkdir,Java,Mkdir,我试图使用Java创建一个新目录,但我意识到mkdir()不能处理由concat()方法或使用“+”操作数组成的字符串 例如: String keyword = "golden+retriever"; String folderName = removeChar(keyword); String strDirectory = "C:/Users/Administrator/Desktop/"+folderName; File newFolder = new File(strDirectory);

我试图使用Java创建一个新目录,但我意识到mkdir()不能处理由concat()方法或使用“+”操作数组成的字符串

例如:

String keyword = "golden+retriever";
String folderName = removeChar(keyword);
String strDirectory = "C:/Users/Administrator/Desktop/"+folderName;
File newFolder = new File(strDirectory);

newFolder.mkdir();
上面的代码不会创建文件夹,但如果使用不带“+”操作数的目录,它将正常工作,如下所示:

String strDirectory = "C:/Users/Administrator/Desktop/goldenretriever";
File newFolder = new File(strDirectory);

newFolder.mkdir();
为什么会这样?是否有任何方法可以使用“+”操作数或concat()方法成功创建目录

更新: 字符串中的“+”不是打字错误。removeChar()方法只是删除“+”以创建没有特殊字符的文件夹

以下是removeChar()的代码:

公共静态字符串removeChar(字符串s)
{
StringBuffer buff=新的StringBuffer(s.length());
buff.setLength(s.length());
int电流=0;

对于(int i=0;i请确保路径正确,否则windows允许+作为文件夹名称。 例如,请参阅我是否有类似于:C:/TestWS/Test/TestingDir/的URL,然后是您的关键字

String keyword = "golden+retriever";
Java不会自动创建所有目录,因此在创建最终关键字dir:C:/TestWS/Test/TestingDir之前,请确保此路径已经存在/


如果TestingDir不存在并试图创建“golden+retriever”,那么java将不会创建任何目录。

您的代码的错误在于
removeChar
在关键字后返回多余的空白。您可以做的是在创建文件之前先修剪它

尝试:

我还建议您在创建文件夹之前先检查它是否存在

if(!newFolder.exists()) {            
    newFolder.mkdir();
}

虽然最初的海报已经使用了另一种更有效的解决方案来解决这个问题,但我想指出他们最初的代码失败的原因

他们创建了一个新的
StringBuffer
,并在顶部复制了一个
s
。他们将初始长度设置为等于原始字符串
s
的长度。如果他们删除了任意数量的加号,则新字符串实际上比原始字符串小。为了确保StringBuffer的长度正确,没有未使用的尾随字符完成时,必须相应地设置长度

要修复原始代码,需要更改:

return buff.toString();
致:

可以重新编写代码,使新的StringBuffer
buff
开始时为空,并根据需要添加新字符。这可以通过以下方式完成:

public static String removeChar(String s)
{
    StringBuffer buff = new StringBuffer();

    for (int i=0; i<s.length(); i++)
    {
        char cur = s.charAt(i);
        if(cur != '+')
            buff.append(cur);
    }
    return buff.toString();
}
公共静态字符串removeChar(字符串s)
{
StringBuffer buff=新的StringBuffer();

对于(int i=0;i您没有使用
+
操作数,字符是字符串的一部分。可能您要做的是
String keyword=“golden”+“retriever”
。或者这是问题中的一个输入错误?什么是
removeChar
?您是否检查了
folderName
的值,以及它是否是应该的值?removeChar()
有什么作用?字符串中的+不是一个输入错误。因为我是从谷歌图像URL获取字符串的。removeChar()方法基本上会从字符串中删除+符号,这样我就可以创建一个没有任何特殊字符的文件夹。@jl90您可以向我们展示
removeChar
方法的代码吗?尽管您是正确的,
trim()
只会在事后修复问题。我想,修复
removeChar()更好吗
这样它就不会返回多余的尾随字符。
return buff.toString();
buff.setLength(current);
return buff.toString();
public static String removeChar(String s)
{
    StringBuffer buff = new StringBuffer();

    for (int i=0; i<s.length(); i++)
    {
        char cur = s.charAt(i);
        if(cur != '+')
            buff.append(cur);
    }
    return buff.toString();
}