我的开发环境:Mac + IntelliJ Idea。
我在Java中练习File类。
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("/Users/Samuel/IdeaProjects/JavaFundamentals/src/aa/bb/test.txt");
file.createNewFile();
System.out.println(file.getAbsolutePath());
}
}
结果为/Users/Samuel/IdeaProjects/JavaFundamentals/src/aa/bb/test.txt
没关系。但是在改变了路径后,打印变得很奇怪。
public class FileDemo {
public static void main(String[] args) throws IOException {
File file = new File("test.txt"); //notice this line
file.createNewFile();
System.out.println(file.getAbsolutePath());
}
}
打印件为/Users/Samuel/IdeaProjects/test.txt
我对路径感到困惑。
答案 0 :(得分:1)
因为/Users/Samuel/IdeaProjects/
是相对路径,并且将相对于程序的工作目录创建文件(在本例中为CREATE PROCEDURE VarCharToNvarChar
AS
BEGIN
DECLARE curChangeTypes CURSOR FOR
SELECT column_name,
table_name,
character_maximum_length
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE='VARCHAR'
AND table_name IN (SELECT DISTINCT table_Name
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DATA_TYPE='VARCHAR');
OPEN curChangeTypes;
DECLARE @cn VARCHAR(50),
@tn VARCHAR(50),
@cml INT;
DECLARE @str VARCHAR(8000);
FETCH NEXT FROM curChangeTypes INTO @cn,@tn,@cml;
WHILE(@@FETCH_STATUS = 0)
BEGIN
IF(@cml = -1)
SET @str = 'ALTER TABLE ' + @tn + ' ALTER COLUMN ' + @cn + ' NVARCHAR(MAX)';
ELSE
SET @str = 'ALTER TABLE ' + @tn + ' ALTER COLUMN ' + @cn +
' NVARCHAR('+CAST(@cml AS VARCHAR)+')';
EXEC(@str);
FETCH NEXT FROM curChangeTypes INTO @cn,@tn,@cml;
END
CLOSE curChangeTypes;
DEALLOCATE curChangeTypes;
END
)。
答案 1 :(得分:1)
在第一种情况下,您在初始化中提供了full path
。所以它正在打印完整的路径。在第二种情况下,您使用的是relative paths
。它的基本路径是项目的主目录。
答案 2 :(得分:0)
1)当你在创建File对象时在File类构造函数中提供完整路径时,它将在所提到的路径上创建文件。
2)但是如果你没有提供完整路径,那么它将在你的.class文件所在的同一路径上创建文件。这是相对路径。
答案 3 :(得分:0)
您的项目文件夹是File类的主文件夹。这是File类的起始位置。如果你想要一个较低的文件夹,你需要指定你的路径,或者你可以使用:" new File(" ../"); 它位于文件夹" IdealProjects"的主要原因;是的,因为这是你项目的开始路径。